Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: chrome/common/extensions/docs/server2/api_data_source_test.py

Issue 344453003: Docserver: separate models for apps and extensions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase/Add comment Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import json 6 import json
7 import os 7 import os
8 import sys 8 import sys
9 import unittest 9 import unittest
10 10
(...skipping 19 matching lines...) Expand all
30 def _MakeLink(href, text): 30 def _MakeLink(href, text):
31 return '<a href="%s">%s</a>' % (href, text) 31 return '<a href="%s">%s</a>' % (href, text)
32 32
33 33
34 def _GetType(dict_, name): 34 def _GetType(dict_, name):
35 for type_ in dict_['types']: 35 for type_ in dict_['types']:
36 if type_['name'] == name: 36 if type_['name'] == name:
37 return type_ 37 return type_
38 38
39 39
40 class _FakeAvailabilityFinder(object):
41
42 def GetAPIAvailability(self, version):
43 return AvailabilityInfo(ChannelInfo('stable', '396', 5))
44
45
46 class _FakeScheduledAvailabilityFinder(object):
47
48 def GetAPIAvailability(self, version):
49 return AvailabilityInfo(ChannelInfo('beta', '1453', 27), scheduled=28)
50
51
52 class _FakeTemplateCache(object): 40 class _FakeTemplateCache(object):
53 41
54 def GetFromFile(self, key): 42 def GetFromFile(self, key):
55 return Future(value='handlebar %s' % key) 43 return Future(value='handlebar %s' % key)
56 44
57 45
46 class _FakeFeaturesBundle(object):
47 def GetAPIFeatures(self):
48 return Future(value={
49 'bluetooth': {'value': True},
50 'contextMenus': {'value': True},
51 'jsonStableAPI': {'value': True},
52 'idle': {'value': True},
53 'input.ime': {'value': True},
54 'tabs': {'value': True}
55 })
56
57
58 class APIDataSourceTest(unittest.TestCase): 58 class APIDataSourceTest(unittest.TestCase):
59 59
60 def setUp(self): 60 def setUp(self):
61 self._base_path = Server2Path('test_data', 'test_json') 61 self._base_path = Server2Path('test_data', 'test_json')
62 62
63 server_instance = ServerInstance.ForTest( 63 server_instance = ServerInstance.ForTest(
64 TestFileSystem(CANNED_TRUNK_FS_DATA, relative_to=CHROME_EXTENSIONS)) 64 TestFileSystem(CANNED_TRUNK_FS_DATA, relative_to=CHROME_EXTENSIONS))
65 file_system = server_instance.host_file_system_provider.GetTrunk() 65 file_system = server_instance.host_file_system_provider.GetTrunk()
66 self._json_cache = server_instance.compiled_fs_factory.ForJson(file_system) 66 self._json_cache = server_instance.compiled_fs_factory.ForJson(file_system)
67 self._features_bundle = FeaturesBundle(file_system, 67 self._features_bundle = FeaturesBundle(file_system,
68 server_instance.compiled_fs_factory, 68 server_instance.compiled_fs_factory,
69 server_instance.object_store_creator) 69 server_instance.object_store_creator,
70 self._api_models = server_instance.api_models 70 'extensions')
71 self._api_models = server_instance.platform_bundle.GetAPIModels(
72 'extensions')
73 self._fake_availability = AvailabilityInfo(ChannelInfo('stable', '396', 5))
71 74
72 # Used for testGetAPIAvailability() so that valid-ish data is processed. 75 # Used for testGetAPIAvailability() so that valid-ish data is processed.
73 server_instance = ServerInstance.ForTest( 76 server_instance = ServerInstance.ForTest(
74 file_system_provider=FakeHostFileSystemProvider( 77 file_system_provider=FakeHostFileSystemProvider(
75 CANNED_API_FILE_SYSTEM_DATA)) 78 CANNED_API_FILE_SYSTEM_DATA))
76 self._avail_api_models = server_instance.api_models 79 self._avail_api_models = server_instance.platform_bundle.GetAPIModels(
80 'extensions')
77 self._avail_json_cache = server_instance.compiled_fs_factory.ForJson( 81 self._avail_json_cache = server_instance.compiled_fs_factory.ForJson(
78 server_instance.host_file_system_provider.GetTrunk()) 82 server_instance.host_file_system_provider.GetTrunk())
79 self._avail_finder = server_instance.availability_finder 83 self._avail_finder = server_instance.platform_bundle.GetAvailabilityFinder(
84 'extensions')
80 85
81 def _ReadLocalFile(self, filename): 86 def _ReadLocalFile(self, filename):
82 with open(os.path.join(self._base_path, filename), 'r') as f: 87 with open(os.path.join(self._base_path, filename), 'r') as f:
83 return f.read() 88 return f.read()
84 89
85 def _LoadJSON(self, filename): 90 def _LoadJSON(self, filename):
86 return json.loads(self._ReadLocalFile(filename)) 91 return json.loads(self._ReadLocalFile(filename))
87 92
88 def testCreateId(self): 93 def testCreateId(self):
89 dict_ = _JSCModel(self._api_models.GetModel('tester').Get(), 94 dict_ = _JSCModel(self._api_models.GetModel('tester').Get(),
90 _FakeAvailabilityFinder(), 95 self._fake_availability,
91 self._json_cache, 96 self._json_cache,
92 _FakeTemplateCache(), 97 _FakeTemplateCache(),
93 self._features_bundle, 98 self._features_bundle,
94 None).ToDict() 99 None).ToDict()
95 self.assertEquals('type-TypeA', dict_['types'][0]['id']) 100 self.assertEquals('type-TypeA', dict_['types'][0]['id'])
96 self.assertEquals('property-TypeA-b', 101 self.assertEquals('property-TypeA-b',
97 dict_['types'][0]['properties'][0]['id']) 102 dict_['types'][0]['properties'][0]['id'])
98 self.assertEquals('method-get', dict_['functions'][0]['id']) 103 self.assertEquals('method-get', dict_['functions'][0]['id'])
99 self.assertEquals('event-EventA', dict_['events'][0]['id']) 104 self.assertEquals('event-EventA', dict_['events'][0]['id'])
100 105
101 # TODO(kalman): re-enable this when we have a rebase option. 106 # TODO(kalman): re-enable this when we have a rebase option.
102 def DISABLED_testToDict(self): 107 def DISABLED_testToDict(self):
103 expected_json = self._LoadJSON('expected_tester.json') 108 expected_json = self._LoadJSON('expected_tester.json')
104 dict_ = _JSCModel(self._api_models.GetModel('tester').Get(), 109 dict_ = _JSCModel(self._api_models.GetModel('tester').Get(),
105 _FakeAvailabilityFinder(), 110 self._fake_availability,
106 self._json_cache, 111 self._json_cache,
107 _FakeTemplateCache(), 112 _FakeTemplateCache(),
108 self._features_bundle, 113 self._features_bundle,
109 None).ToDict() 114 None).ToDict()
110 self.assertEquals(expected_json, dict_) 115 self.assertEquals(expected_json, dict_)
111 116
112 def testFormatValue(self): 117 def testFormatValue(self):
113 self.assertEquals('1,234,567', _FormatValue(1234567)) 118 self.assertEquals('1,234,567', _FormatValue(1234567))
114 self.assertEquals('67', _FormatValue(67)) 119 self.assertEquals('67', _FormatValue(67))
115 self.assertEquals('234,567', _FormatValue(234567)) 120 self.assertEquals('234,567', _FormatValue(234567))
116 121
117 def testGetAPIAvailability(self): 122 def testGetAPIAvailability(self):
118 api_availabilities = { 123 api_availabilities = {
119 'bluetooth': AvailabilityInfo( 124 'bluetooth': 28,
120 ChannelInfo('dev', CANNED_BRANCHES[28], 28)), 125 'contextMenus': 'trunk',
121 'contextMenus': AvailabilityInfo( 126 'jsonStableAPI': 20,
122 ChannelInfo('trunk', CANNED_BRANCHES['trunk'], 'trunk')), 127 'idle': 5,
123 'jsonStableAPI': AvailabilityInfo( 128 'input.ime': 18,
124 ChannelInfo('stable', CANNED_BRANCHES[20], 20)), 129 'tabs': 18
125 'idle': AvailabilityInfo(
126 ChannelInfo('stable', CANNED_BRANCHES[5], 5)),
127 'input.ime': AvailabilityInfo(
128 ChannelInfo('stable', CANNED_BRANCHES[18], 18)),
129 'tabs': AvailabilityInfo(
130 ChannelInfo('stable', CANNED_BRANCHES[18], 18))
131 } 130 }
132 for api_name, availability in api_availabilities.iteritems(): 131 for api_name, availability in api_availabilities.iteritems():
133 model = _JSCModel(self._avail_api_models.GetModel(api_name).Get(), 132 model_dict = _JSCModel(
134 self._avail_finder, 133 self._avail_api_models.GetModel(api_name).Get(),
135 self._avail_json_cache, 134 self._avail_finder.GetAPIAvailability(api_name),
136 _FakeTemplateCache(), 135 self._avail_json_cache,
137 self._features_bundle, 136 _FakeTemplateCache(),
138 None) 137 _FakeFeaturesBundle(),
139 self.assertEquals(availability, model._GetAPIAvailability()) 138 None).ToDict()
139 self.assertEquals(availability,
140 model_dict['introList'][1]['content'][0]['version'])
140 141
141 def testGetIntroList(self): 142 def testGetIntroList(self):
142 model = _JSCModel(self._api_models.GetModel('tester').Get(), 143 model = _JSCModel(self._api_models.GetModel('tester').Get(),
143 _FakeAvailabilityFinder(), 144 self._fake_availability,
144 self._json_cache, 145 self._json_cache,
145 _FakeTemplateCache(), 146 _FakeTemplateCache(),
146 self._features_bundle, 147 self._features_bundle,
147 None) 148 None)
148 expected_list = [ 149 expected_list = [
149 { 'title': 'Description', 150 { 'title': 'Description',
150 'content': [ 151 'content': [
151 { 'text': 'a test api' } 152 { 'text': 'a test api' }
152 ] 153 ]
153 }, 154 },
(...skipping 26 matching lines...) Expand all
180 { 'link': 'https://tester.test.com/welcome.html', 181 { 'link': 'https://tester.test.com/welcome.html',
181 'text': 'Welcome!' 182 'text': 'Welcome!'
182 } 183 }
183 ] 184 ]
184 } 185 }
185 ] 186 ]
186 self.assertEquals(model._GetIntroTableList(), expected_list) 187 self.assertEquals(model._GetIntroTableList(), expected_list)
187 188
188 # Tests the same data with a scheduled availability. 189 # Tests the same data with a scheduled availability.
189 model = _JSCModel(self._api_models.GetModel('tester').Get(), 190 model = _JSCModel(self._api_models.GetModel('tester').Get(),
190 _FakeScheduledAvailabilityFinder(), 191 AvailabilityInfo(ChannelInfo('beta', '1453', 27), scheduled=28),
191 self._json_cache, 192 self._json_cache,
192 _FakeTemplateCache(), 193 _FakeTemplateCache(),
193 self._features_bundle, 194 self._features_bundle,
194 None) 195 None)
195 expected_list[1] = { 196 expected_list[1] = {
196 'title': 'Availability', 197 'title': 'Availability',
197 'content': [ 198 'content': [
198 { 'partial': 'handlebar chrome/common/extensions/docs/' + 199 { 'partial': 'handlebar chrome/common/extensions/docs/' +
199 'templates/private/intro_tables/beta_message.html', 200 'templates/private/intro_tables/beta_message.html',
200 'version': 27, 201 'version': 27,
201 'scheduled': 28 202 'scheduled': 28
202 } 203 }
203 ] 204 ]
204 } 205 }
(...skipping 14 matching lines...) Expand all
219 events['types'][0]['functions'].append(add_rules) 220 events['types'][0]['functions'].append(add_rules)
220 self.assertEqual(add_rules, 221 self.assertEqual(add_rules,
221 _GetEventByNameFromEvents(events)['addRules']) 222 _GetEventByNameFromEvents(events)['addRules'])
222 223
223 events['types'][0]['functions'].append(add_rules) 224 events['types'][0]['functions'].append(add_rules)
224 # Duplicates are an error. 225 # Duplicates are an error.
225 self.assertRaises(AssertionError, _GetEventByNameFromEvents, events) 226 self.assertRaises(AssertionError, _GetEventByNameFromEvents, events)
226 227
227 def _FakeLoadAddRulesSchema(self): 228 def _FakeLoadAddRulesSchema(self):
228 events = self._LoadJSON('add_rules_def_test.json') 229 events = self._LoadJSON('add_rules_def_test.json')
229 return _GetEventByNameFromEvents(events) 230 return Future(value=_GetEventByNameFromEvents(events))
230 231
231 def testAddRules(self): 232 def testAddRules(self):
232 dict_ = _JSCModel(self._api_models.GetModel('add_rules_tester').Get(), 233 dict_ = _JSCModel(self._api_models.GetModel('add_rules_tester').Get(),
233 _FakeAvailabilityFinder(), 234 self._fake_availability,
234 self._json_cache, 235 self._json_cache,
235 _FakeTemplateCache(), 236 _FakeTemplateCache(),
236 self._features_bundle, 237 self._features_bundle,
237 self._FakeLoadAddRulesSchema).ToDict() 238 self._FakeLoadAddRulesSchema()).ToDict()
238 239
239 # Check that the first event has the addRulesFunction defined. 240 # Check that the first event has the addRulesFunction defined.
240 self.assertEquals('add_rules_tester', dict_['name']) 241 self.assertEquals('add_rules_tester', dict_['name'])
241 self.assertEquals('rules', dict_['events'][0]['name']) 242 self.assertEquals('rules', dict_['events'][0]['name'])
242 self.assertEquals('notable_name_to_check_for', 243 self.assertEquals('notable_name_to_check_for',
243 dict_['events'][0]['byName']['addRules'][ 244 dict_['events'][0]['byName']['addRules'][
244 'parameters'][0]['name']) 245 'parameters'][0]['name'])
245 246
246 # Check that the second event has addListener defined. 247 # Check that the second event has addListener defined.
247 self.assertEquals('noRules', dict_['events'][1]['name']) 248 self.assertEquals('noRules', dict_['events'][1]['name'])
248 self.assertEquals('add_rules_tester', dict_['name']) 249 self.assertEquals('add_rules_tester', dict_['name'])
249 self.assertEquals('noRules', dict_['events'][1]['name']) 250 self.assertEquals('noRules', dict_['events'][1]['name'])
250 self.assertEquals('callback', 251 self.assertEquals('callback',
251 dict_['events'][0]['byName']['addListener'][ 252 dict_['events'][0]['byName']['addListener'][
252 'parameters'][0]['name']) 253 'parameters'][0]['name'])
253 254
254 if __name__ == '__main__': 255 if __name__ == '__main__':
255 unittest.main() 256 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698