- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / docs / server2 / api_list_data_source_test.py
1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 import json
7 import unittest
8
9 from api_list_data_source import APIListDataSource
10 from server_instance import ServerInstance
11 from test_file_system import TestFileSystem
12
13
14 def _ToTestData(obj):
15   '''Transforms |obj| into test data by turning a list of files into an object
16   mapping that file to its contents (derived from its name).
17   '''
18   return dict((name, name) for name in obj)
19
20
21 def _ToTestFeatures(names):
22   '''Transforms a list of strings into a minimal JSON features object.
23   '''
24   return dict((name, {'name': name, 'platforms': platforms})
25               for name, platforms in names)
26
27
28 _TEST_API_FEATURES = _ToTestFeatures([
29   ('alarms', ['apps', 'extensions']),
30   ('app.window', ['apps']),
31   ('browserAction', ['extensions']),
32   ('experimental.bluetooth', ['apps']),
33   ('experimental.history', ['extensions']),
34   ('experimental.power', ['apps', 'extensions']),
35   ('infobars', ['extensions']),
36   ('something_internal', ['apps']),
37   ('something_else_internal', ['extensions']),
38   ('storage', ['apps', 'extensions'])
39 ])
40
41
42 _TEST_DATA = {
43   'api': {
44     '_api_features.json': json.dumps(_TEST_API_FEATURES),
45     '_manifest_features.json': '{}',
46     '_permission_features.json': '{}',
47   },
48   'docs': {
49     'templates': {
50       'json': {
51         'manifest.json': '{}',
52         'permissions.json': '{}',
53       },
54       'public': {
55         'apps': _ToTestData([
56           'alarms.html',
57           'app_window.html',
58           'experimental_bluetooth.html',
59           'experimental_power.html',
60           'storage.html',
61         ]),
62         'extensions': _ToTestData([
63           'alarms.html',
64           'browserAction.html',
65           'experimental_history.html',
66           'experimental_power.html',
67           'infobars.html',
68           'storage.html',
69         ]),
70       },
71     },
72   },
73 }
74
75
76 class APIListDataSourceTest(unittest.TestCase):
77   def setUp(self):
78     server_instance = ServerInstance.ForTest(TestFileSystem(_TEST_DATA))
79     self._factory = APIListDataSource.Factory(
80         server_instance.compiled_fs_factory,
81         server_instance.host_file_system_provider.GetTrunk(),
82         server_instance.features_bundle,
83         server_instance.object_store_creator)
84
85   def testApps(self):
86     api_list = self._factory.Create()
87     self.assertEqual([
88         {
89           'name': 'alarms',
90           'platforms': ['apps', 'extensions']
91         },
92         {
93           'name': 'app.window',
94           'platforms': ['apps']
95         },
96         {
97           'name': 'storage',
98           'platforms': ['apps', 'extensions'],
99           'last': True
100         }],
101         api_list.get('apps').get('chrome'))
102
103   def testExperimentalApps(self):
104     api_list = self._factory.Create()
105     self.assertEqual([
106         {
107           'name': 'experimental.bluetooth',
108           'platforms': ['apps']
109         },
110         {
111           'name': 'experimental.power',
112           'platforms': ['apps', 'extensions'],
113           'last': True
114         }],
115         sorted(api_list.get('apps').get('experimental')))
116
117   def testExtensions(self):
118     api_list = self._factory.Create()
119     self.assertEqual([
120         {
121           'name': 'alarms',
122           'platforms': ['apps', 'extensions']
123         },
124         {
125           'name': 'browserAction',
126           'platforms': ['extensions']
127         },
128         {
129           'name': 'infobars',
130           'platforms': ['extensions']
131         },
132         {
133           'name': 'storage',
134           'platforms': ['apps', 'extensions'],
135           'last': True
136         }],
137         sorted(api_list.get('extensions').get('chrome')))
138
139   def testExperimentalExtensions(self):
140     api_list = self._factory.Create()
141     self.assertEqual([
142         {
143           'name': 'experimental.history',
144           'platforms': ['extensions']
145         },
146         {
147           'name': 'experimental.power',
148           'platforms': ['apps', 'extensions'],
149           'last': True
150         }],
151         sorted(api_list.get('extensions').get('experimental')))
152
153 if __name__ == '__main__':
154   unittest.main()