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()