1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#!/usr/bin/env python 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch# Copyright 2013 The Chromium Authors. All rights reserved. 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch# Use of this source code is governed by a BSD-style license that can be 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch# found in the LICENSE file. 5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochimport json 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochimport os 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochimport unittest 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochimport sys 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochfrom fake_host_file_system_provider import FakeHostFileSystemProvider 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochfrom server_instance import ServerInstance 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochfrom test_data.canned_data import CANNED_API_FILE_SYSTEM_DATA 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochfrom whats_new_data_source import WhatsNewDataSource 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass WhatsNewDataSourceTest(unittest.TestCase): 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch def testCreateWhatsNewDataSource(self): 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch api_fs_creator = FakeHostFileSystemProvider(CANNED_API_FILE_SYSTEM_DATA) 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch server_instance = ServerInstance.ForTest( 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch file_system_provider=api_fs_creator) 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch whats_new_data_source = WhatsNewDataSource(server_instance, None) 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch expected_whats_new_changes_list = [ 25 { 26 'version': 22, 27 'additionsToExistingApis': [{ 28 'version': 22, 29 'type': 'additionsToExistingApis', 30 'id': 'backgroundpages.to-be-non-persistent', 31 'description': 'backgrounds to be non persistent' 32 } 33 ], 34 }, 35 { 36 'version': 21, 37 'additionsToExistingApis': [{ 38 'version': 21, 39 'type': 'additionsToExistingApis', 40 'id': 'chromeSetting.set-regular-only-scope', 41 'description': 'ChromeSetting.set now has a regular_only scope.' 42 } 43 ], 44 }, 45 { 46 'version': 20, 47 'manifestChanges': [{ 48 'version': 20, 49 'type': 'manifestChanges', 50 'id': 'manifest-v1-deprecated', 51 'description': 'Manifest version 1 was deprecated in Chrome 18' 52 } 53 ], 54 } 55 ] 56 57 expected_new_info_of_apps = [ 58 { 59 'version': 26, 60 'apis': [{ 61 'version': 26, 'type': 'apis', 62 'name': u'alarm', 63 'description': u'<code>alarm</code>' 64 }, 65 { 66 'version': 26, 'type': 'apis', 67 'name': u'app.window', 68 'description': u'<code>app.window</code>' 69 } 70 ] 71 } 72 ] 73 expected_new_info_of_apps.extend(expected_whats_new_changes_list) 74 75 expected_new_info_of_extensions = [ 76 { 77 'version': 26, 78 'apis': [{ 79 'version': 26, 'type': 'apis', 80 'name': u'alarm', 81 'description': u'<code>alarm</code>' 82 }, 83 { 84 'version': 26, 'type': 'apis', 85 'name': u'browserAction', 86 'description': u'<code>browserAction</code>' 87 } 88 ] 89 } 90 ] 91 expected_new_info_of_extensions.extend(expected_whats_new_changes_list) 92 93 whats_new_for_apps = whats_new_data_source.get('apps') 94 whats_new_for_extension = whats_new_data_source.get('extensions') 95 self.assertEqual(expected_new_info_of_apps, whats_new_for_apps) 96 self.assertEqual(expected_new_info_of_extensions, whats_new_for_extension) 97 98if __name__ == '__main__': 99 unittest.main()