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

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

Issue 216943006: Remove ReferenceResolver dependency in APIDataSource. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 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
11 from api_data_source import (_JSCModel, 11 from api_data_source import (_JSCModel,
12 _FormatValue, 12 _FormatValue,
13 _GetEventByNameFromEvents) 13 _GetEventByNameFromEvents)
14 from branch_utility import ChannelInfo 14 from branch_utility import ChannelInfo
15 from extensions_paths import CHROME_EXTENSIONS 15 from extensions_paths import CHROME_EXTENSIONS
16 from fake_host_file_system_provider import FakeHostFileSystemProvider 16 from fake_host_file_system_provider import FakeHostFileSystemProvider
17 from features_bundle import FeaturesBundle 17 from features_bundle import FeaturesBundle
18 from file_system import FileNotFoundError 18 from file_system import FileNotFoundError
19 from future import Future 19 from future import Future
20 from object_store_creator import ObjectStoreCreator 20 from object_store_creator import ObjectStoreCreator
21 from reference_resolver import ReferenceResolver
22 from server_instance import ServerInstance 21 from server_instance import ServerInstance
23 from test_data.canned_data import (CANNED_API_FILE_SYSTEM_DATA, CANNED_BRANCHES) 22 from test_data.canned_data import (CANNED_API_FILE_SYSTEM_DATA, CANNED_BRANCHES)
24 from test_data.api_data_source.canned_trunk_fs import CANNED_TRUNK_FS_DATA 23 from test_data.api_data_source.canned_trunk_fs import CANNED_TRUNK_FS_DATA
25 from test_file_system import TestFileSystem 24 from test_file_system import TestFileSystem
26 from test_util import Server2Path 25 from test_util import Server2Path
27 from third_party.json_schema_compiler.memoize import memoize 26 from third_party.json_schema_compiler.memoize import memoize
28 27
29 28
30 def _MakeLink(href, text): 29 def _MakeLink(href, text):
31 return '<a href="%s">%s</a>' % (href, text) 30 return '<a href="%s">%s</a>' % (href, text)
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 CANNED_API_FILE_SYSTEM_DATA)) 98 CANNED_API_FILE_SYSTEM_DATA))
100 self._avail_api_models = server_instance.api_models 99 self._avail_api_models = server_instance.api_models
101 self._avail_json_cache = server_instance.compiled_fs_factory.ForJson( 100 self._avail_json_cache = server_instance.compiled_fs_factory.ForJson(
102 server_instance.host_file_system_provider.GetTrunk()) 101 server_instance.host_file_system_provider.GetTrunk())
103 self._avail_finder = server_instance.availability_finder 102 self._avail_finder = server_instance.availability_finder
104 103
105 def _ReadLocalFile(self, filename): 104 def _ReadLocalFile(self, filename):
106 with open(os.path.join(self._base_path, filename), 'r') as f: 105 with open(os.path.join(self._base_path, filename), 'r') as f:
107 return f.read() 106 return f.read()
108 107
109 def _CreateRefResolver(self, filename):
110 test_data = self._LoadJSON(filename)
111 return ReferenceResolver.Factory(_FakeAPIDataSource(test_data),
112 _FakeAPIModels(test_data),
113 ObjectStoreCreator.ForTest()).Create()
114
115 def _LoadJSON(self, filename): 108 def _LoadJSON(self, filename):
116 return json.loads(self._ReadLocalFile(filename)) 109 return json.loads(self._ReadLocalFile(filename))
117 110
118 def testCreateId(self): 111 def testCreateId(self):
119 dict_ = _JSCModel('tester', 112 dict_ = _JSCModel('tester',
120 self._api_models, 113 self._api_models,
121 self._CreateRefResolver('test_file_data_source.json'),
122 False, 114 False,
123 _FakeAvailabilityFinder(), 115 _FakeAvailabilityFinder(),
124 self._json_cache, 116 self._json_cache,
125 _FakeTemplateCache(), 117 _FakeTemplateCache(),
126 self._features_bundle, 118 self._features_bundle,
127 None).ToDict() 119 None).ToDict()
128 self.assertEquals('type-TypeA', dict_['types'][0]['id']) 120 self.assertEquals('type-TypeA', dict_['types'][0]['id'])
129 self.assertEquals('property-TypeA-b', 121 self.assertEquals('property-TypeA-b',
130 dict_['types'][0]['properties'][0]['id']) 122 dict_['types'][0]['properties'][0]['id'])
131 self.assertEquals('method-get', dict_['functions'][0]['id']) 123 self.assertEquals('method-get', dict_['functions'][0]['id'])
132 self.assertEquals('event-EventA', dict_['events'][0]['id']) 124 self.assertEquals('event-EventA', dict_['events'][0]['id'])
133 125
134 # TODO(kalman): re-enable this when we have a rebase option. 126 # TODO(kalman): re-enable this when we have a rebase option.
135 def DISABLED_testToDict(self): 127 def DISABLED_testToDict(self):
136 expected_json = self._LoadJSON('expected_tester.json') 128 expected_json = self._LoadJSON('expected_tester.json')
137 dict_ = _JSCModel('tester', 129 dict_ = _JSCModel('tester',
138 self._api_models, 130 self._api_models,
139 False, 131 False,
140 self._CreateRefResolver('test_file_data_source.json'),
141 _FakeAvailabilityFinder(), 132 _FakeAvailabilityFinder(),
142 self._json_cache, 133 self._json_cache,
143 _FakeTemplateCache(), 134 _FakeTemplateCache(),
144 self._features_bundle, 135 self._features_bundle,
145 None).ToDict() 136 None).ToDict()
146 self.assertEquals(expected_json, dict_) 137 self.assertEquals(expected_json, dict_)
147 138
148 def testFormatValue(self): 139 def testFormatValue(self):
149 self.assertEquals('1,234,567', _FormatValue(1234567)) 140 self.assertEquals('1,234,567', _FormatValue(1234567))
150 self.assertEquals('67', _FormatValue(67)) 141 self.assertEquals('67', _FormatValue(67))
151 self.assertEquals('234,567', _FormatValue(234567)) 142 self.assertEquals('234,567', _FormatValue(234567))
152 143
153 def testFormatDescription(self):
ahernandez 2014/03/28 19:04:52 Since we no longer format the description in JSCMo
154 dict_ = _JSCModel('ref_test',
155 self._api_models,
156 self._CreateRefResolver('ref_test_data_source.json'),
157 False,
158 _FakeAvailabilityFinder(),
159 self._json_cache,
160 _FakeTemplateCache(),
161 self._features_bundle,
162 None).ToDict()
163 self.assertEquals(_MakeLink('ref_test.html#type-type2', 'type2'),
164 _GetType(dict_, 'type1')['description'])
165 self.assertEquals(
166 'A %s, or %s' % (_MakeLink('ref_test.html#type-type3', 'type3'),
167 _MakeLink('ref_test.html#type-type2', 'type2')),
168 _GetType(dict_, 'type2')['description'])
169 self.assertEquals(
170 '%s != %s' % (_MakeLink('other.html#type-type2', 'other.type2'),
171 _MakeLink('ref_test.html#type-type2', 'type2')),
172 _GetType(dict_, 'type3')['description'])
173
174
175 def testGetApiAvailability(self): 144 def testGetApiAvailability(self):
176 api_availabilities = { 145 api_availabilities = {
177 'bluetooth': ChannelInfo('dev', CANNED_BRANCHES[28], 28), 146 'bluetooth': ChannelInfo('dev', CANNED_BRANCHES[28], 28),
178 'contextMenus': ChannelInfo('trunk', CANNED_BRANCHES['trunk'], 'trunk'), 147 'contextMenus': ChannelInfo('trunk', CANNED_BRANCHES['trunk'], 'trunk'),
179 'jsonStableAPI': ChannelInfo('stable', CANNED_BRANCHES[20], 20), 148 'jsonStableAPI': ChannelInfo('stable', CANNED_BRANCHES[20], 20),
180 'idle': ChannelInfo('stable', CANNED_BRANCHES[5], 5), 149 'idle': ChannelInfo('stable', CANNED_BRANCHES[5], 5),
181 'input.ime': ChannelInfo('stable', CANNED_BRANCHES[18], 18), 150 'input.ime': ChannelInfo('stable', CANNED_BRANCHES[18], 18),
182 'tabs': ChannelInfo('stable', CANNED_BRANCHES[18], 18) 151 'tabs': ChannelInfo('stable', CANNED_BRANCHES[18], 18)
183 } 152 }
184 for api_name, availability in api_availabilities.iteritems(): 153 for api_name, availability in api_availabilities.iteritems():
185 model = _JSCModel(api_name, 154 model = _JSCModel(api_name,
186 self._avail_api_models, 155 self._avail_api_models,
187 None,
188 True, 156 True,
189 self._avail_finder, 157 self._avail_finder,
190 self._avail_json_cache, 158 self._avail_json_cache,
191 _FakeTemplateCache(), 159 _FakeTemplateCache(),
192 self._features_bundle, 160 self._features_bundle,
193 None) 161 None)
194 self.assertEquals(availability, model._GetApiAvailability()) 162 self.assertEquals(availability, model._GetApiAvailability())
195 163
196 def testGetIntroList(self): 164 def testGetIntroList(self):
197 model = _JSCModel('tester', 165 model = _JSCModel('tester',
198 self._api_models, 166 self._api_models,
199 self._CreateRefResolver('test_file_data_source.json'),
200 False, 167 False,
201 _FakeAvailabilityFinder(), 168 _FakeAvailabilityFinder(),
202 self._json_cache, 169 self._json_cache,
203 _FakeTemplateCache(), 170 _FakeTemplateCache(),
204 self._features_bundle, 171 self._features_bundle,
205 None) 172 None)
206 expected_list = [ 173 expected_list = [
207 { 'title': 'Description', 174 { 'title': 'Description',
208 'content': [ 175 'content': [
209 { 'text': 'a test api' } 176 { 'text': 'a test api' }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 # Duplicates are an error. 229 # Duplicates are an error.
263 self.assertRaises(AssertionError, _GetEventByNameFromEvents, events) 230 self.assertRaises(AssertionError, _GetEventByNameFromEvents, events)
264 231
265 def _FakeLoadAddRulesSchema(self): 232 def _FakeLoadAddRulesSchema(self):
266 events = self._LoadJSON('add_rules_def_test.json') 233 events = self._LoadJSON('add_rules_def_test.json')
267 return _GetEventByNameFromEvents(events) 234 return _GetEventByNameFromEvents(events)
268 235
269 def testAddRules(self): 236 def testAddRules(self):
270 dict_ = _JSCModel('add_rules_tester', 237 dict_ = _JSCModel('add_rules_tester',
271 self._api_models, 238 self._api_models,
272 self._CreateRefResolver('test_file_data_source.json'),
273 False, 239 False,
274 _FakeAvailabilityFinder(), 240 _FakeAvailabilityFinder(),
275 self._json_cache, 241 self._json_cache,
276 _FakeTemplateCache(), 242 _FakeTemplateCache(),
277 self._features_bundle, 243 self._features_bundle,
278 self._FakeLoadAddRulesSchema).ToDict() 244 self._FakeLoadAddRulesSchema).ToDict()
279 245
280 # Check that the first event has the addRulesFunction defined. 246 # Check that the first event has the addRulesFunction defined.
281 self.assertEquals('add_rules_tester', dict_['name']) 247 self.assertEquals('add_rules_tester', dict_['name'])
282 self.assertEquals('rules', dict_['events'][0]['name']) 248 self.assertEquals('rules', dict_['events'][0]['name'])
283 self.assertEquals('notable_name_to_check_for', 249 self.assertEquals('notable_name_to_check_for',
284 dict_['events'][0]['byName']['addRules'][ 250 dict_['events'][0]['byName']['addRules'][
285 'parameters'][0]['name']) 251 'parameters'][0]['name'])
286 252
287 # Check that the second event has addListener defined. 253 # Check that the second event has addListener defined.
288 self.assertEquals('noRules', dict_['events'][1]['name']) 254 self.assertEquals('noRules', dict_['events'][1]['name'])
289 self.assertEquals('add_rules_tester', dict_['name']) 255 self.assertEquals('add_rules_tester', dict_['name'])
290 self.assertEquals('noRules', dict_['events'][1]['name']) 256 self.assertEquals('noRules', dict_['events'][1]['name'])
291 self.assertEquals('callback', 257 self.assertEquals('callback',
292 dict_['events'][0]['byName']['addListener'][ 258 dict_['events'][0]['byName']['addListener'][
293 'parameters'][0]['name']) 259 'parameters'][0]['name'])
294 260
295 if __name__ == '__main__': 261 if __name__ == '__main__':
296 unittest.main() 262 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698