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

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, 9 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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 CANNED_API_FILE_SYSTEM_DATA)) 107 CANNED_API_FILE_SYSTEM_DATA))
109 self._avail_api_models = server_instance.api_models 108 self._avail_api_models = server_instance.api_models
110 self._avail_json_cache = server_instance.compiled_fs_factory.ForJson( 109 self._avail_json_cache = server_instance.compiled_fs_factory.ForJson(
111 server_instance.host_file_system_provider.GetTrunk()) 110 server_instance.host_file_system_provider.GetTrunk())
112 self._avail_finder = server_instance.availability_finder 111 self._avail_finder = server_instance.availability_finder
113 112
114 def _ReadLocalFile(self, filename): 113 def _ReadLocalFile(self, filename):
115 with open(os.path.join(self._base_path, filename), 'r') as f: 114 with open(os.path.join(self._base_path, filename), 'r') as f:
116 return f.read() 115 return f.read()
117 116
118 def _CreateRefResolver(self, filename):
119 test_data = self._LoadJSON(filename)
120 return ReferenceResolver.Factory(_FakeAPIDataSource(test_data),
121 _FakeAPIModels(test_data),
122 ObjectStoreCreator.ForTest()).Create()
123
124 def _LoadJSON(self, filename): 117 def _LoadJSON(self, filename):
125 return json.loads(self._ReadLocalFile(filename)) 118 return json.loads(self._ReadLocalFile(filename))
126 119
127 def testCreateId(self): 120 def testCreateId(self):
128 dict_ = _JSCModel('tester', 121 dict_ = _JSCModel('tester',
129 self._api_models, 122 self._api_models,
130 self._CreateRefResolver('test_file_data_source.json'),
131 False, 123 False,
132 _FakeAvailabilityFinder(), 124 _FakeAvailabilityFinder(),
133 self._json_cache, 125 self._json_cache,
134 _FakeTemplateCache(), 126 _FakeTemplateCache(),
135 self._features_bundle, 127 self._features_bundle,
136 None).ToDict() 128 None).ToDict()
137 self.assertEquals('type-TypeA', dict_['types'][0]['id']) 129 self.assertEquals('type-TypeA', dict_['types'][0]['id'])
138 self.assertEquals('property-TypeA-b', 130 self.assertEquals('property-TypeA-b',
139 dict_['types'][0]['properties'][0]['id']) 131 dict_['types'][0]['properties'][0]['id'])
140 self.assertEquals('method-get', dict_['functions'][0]['id']) 132 self.assertEquals('method-get', dict_['functions'][0]['id'])
141 self.assertEquals('event-EventA', dict_['events'][0]['id']) 133 self.assertEquals('event-EventA', dict_['events'][0]['id'])
142 134
143 # TODO(kalman): re-enable this when we have a rebase option. 135 # TODO(kalman): re-enable this when we have a rebase option.
144 def DISABLED_testToDict(self): 136 def DISABLED_testToDict(self):
145 expected_json = self._LoadJSON('expected_tester.json') 137 expected_json = self._LoadJSON('expected_tester.json')
146 dict_ = _JSCModel('tester', 138 dict_ = _JSCModel('tester',
147 self._api_models, 139 self._api_models,
148 False, 140 False,
149 self._CreateRefResolver('test_file_data_source.json'),
150 _FakeAvailabilityFinder(), 141 _FakeAvailabilityFinder(),
151 self._json_cache, 142 self._json_cache,
152 _FakeTemplateCache(), 143 _FakeTemplateCache(),
153 self._features_bundle, 144 self._features_bundle,
154 None).ToDict() 145 None).ToDict()
155 self.assertEquals(expected_json, dict_) 146 self.assertEquals(expected_json, dict_)
156 147
157 def testFormatValue(self): 148 def testFormatValue(self):
158 self.assertEquals('1,234,567', _FormatValue(1234567)) 149 self.assertEquals('1,234,567', _FormatValue(1234567))
159 self.assertEquals('67', _FormatValue(67)) 150 self.assertEquals('67', _FormatValue(67))
160 self.assertEquals('234,567', _FormatValue(234567)) 151 self.assertEquals('234,567', _FormatValue(234567))
161 152
162 def testFormatDescription(self):
163 dict_ = _JSCModel('ref_test',
164 self._api_models,
165 self._CreateRefResolver('ref_test_data_source.json'),
166 False,
167 _FakeAvailabilityFinder(),
168 self._json_cache,
169 _FakeTemplateCache(),
170 self._features_bundle,
171 None).ToDict()
172 self.assertEquals(_MakeLink('ref_test#type-type2', 'type2'),
173 _GetType(dict_, 'type1')['description'])
174 self.assertEquals(
175 'A %s, or %s' % (_MakeLink('ref_test#type-type3', 'type3'),
176 _MakeLink('ref_test#type-type2', 'type2')),
177 _GetType(dict_, 'type2')['description'])
178 self.assertEquals(
179 '%s != %s' % (_MakeLink('other#type-type2', 'other.type2'),
180 _MakeLink('ref_test#type-type2', 'type2')),
181 _GetType(dict_, 'type3')['description'])
182
183
184 def testGetApiAvailability(self): 153 def testGetApiAvailability(self):
185 api_availabilities = { 154 api_availabilities = {
186 'bluetooth': ChannelInfo('dev', CANNED_BRANCHES[28], 28), 155 'bluetooth': ChannelInfo('dev', CANNED_BRANCHES[28], 28),
187 'contextMenus': ChannelInfo('trunk', CANNED_BRANCHES['trunk'], 'trunk'), 156 'contextMenus': ChannelInfo('trunk', CANNED_BRANCHES['trunk'], 'trunk'),
188 'jsonStableAPI': ChannelInfo('stable', CANNED_BRANCHES[20], 20), 157 'jsonStableAPI': ChannelInfo('stable', CANNED_BRANCHES[20], 20),
189 'idle': ChannelInfo('stable', CANNED_BRANCHES[5], 5), 158 'idle': ChannelInfo('stable', CANNED_BRANCHES[5], 5),
190 'input.ime': ChannelInfo('stable', CANNED_BRANCHES[18], 18), 159 'input.ime': ChannelInfo('stable', CANNED_BRANCHES[18], 18),
191 'tabs': ChannelInfo('stable', CANNED_BRANCHES[18], 18) 160 'tabs': ChannelInfo('stable', CANNED_BRANCHES[18], 18)
192 } 161 }
193 for api_name, availability in api_availabilities.iteritems(): 162 for api_name, availability in api_availabilities.iteritems():
194 model = _JSCModel(api_name, 163 model = _JSCModel(api_name,
195 self._avail_api_models, 164 self._avail_api_models,
196 None,
197 True, 165 True,
198 self._avail_finder, 166 self._avail_finder,
199 self._avail_json_cache, 167 self._avail_json_cache,
200 _FakeTemplateCache(), 168 _FakeTemplateCache(),
201 self._features_bundle, 169 self._features_bundle,
202 None) 170 None)
203 self.assertEquals(availability, model._GetApiAvailability()) 171 self.assertEquals(availability, model._GetApiAvailability())
204 172
205 def testGetIntroList(self): 173 def testGetIntroList(self):
206 model = _JSCModel('tester', 174 model = _JSCModel('tester',
207 self._api_models, 175 self._api_models,
208 self._CreateRefResolver('test_file_data_source.json'),
209 False, 176 False,
210 _FakeAvailabilityFinder(), 177 _FakeAvailabilityFinder(),
211 self._json_cache, 178 self._json_cache,
212 _FakeTemplateCache(), 179 _FakeTemplateCache(),
213 self._features_bundle, 180 self._features_bundle,
214 None) 181 None)
215 expected_list = [ 182 expected_list = [
216 { 'title': 'Description', 183 { 'title': 'Description',
217 'content': [ 184 'content': [
218 { 'text': 'a test api' } 185 { 'text': 'a test api' }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 # Duplicates are an error. 238 # Duplicates are an error.
272 self.assertRaises(AssertionError, _GetEventByNameFromEvents, events) 239 self.assertRaises(AssertionError, _GetEventByNameFromEvents, events)
273 240
274 def _FakeLoadAddRulesSchema(self): 241 def _FakeLoadAddRulesSchema(self):
275 events = self._LoadJSON('add_rules_def_test.json') 242 events = self._LoadJSON('add_rules_def_test.json')
276 return _GetEventByNameFromEvents(events) 243 return _GetEventByNameFromEvents(events)
277 244
278 def testAddRules(self): 245 def testAddRules(self):
279 dict_ = _JSCModel('add_rules_tester', 246 dict_ = _JSCModel('add_rules_tester',
280 self._api_models, 247 self._api_models,
281 self._CreateRefResolver('test_file_data_source.json'),
282 False, 248 False,
283 _FakeAvailabilityFinder(), 249 _FakeAvailabilityFinder(),
284 self._json_cache, 250 self._json_cache,
285 _FakeTemplateCache(), 251 _FakeTemplateCache(),
286 self._features_bundle, 252 self._features_bundle,
287 self._FakeLoadAddRulesSchema).ToDict() 253 self._FakeLoadAddRulesSchema).ToDict()
288 254
289 # Check that the first event has the addRulesFunction defined. 255 # Check that the first event has the addRulesFunction defined.
290 self.assertEquals('add_rules_tester', dict_['name']) 256 self.assertEquals('add_rules_tester', dict_['name'])
291 self.assertEquals('rules', dict_['events'][0]['name']) 257 self.assertEquals('rules', dict_['events'][0]['name'])
292 self.assertEquals('notable_name_to_check_for', 258 self.assertEquals('notable_name_to_check_for',
293 dict_['events'][0]['byName']['addRules'][ 259 dict_['events'][0]['byName']['addRules'][
294 'parameters'][0]['name']) 260 'parameters'][0]['name'])
295 261
296 # Check that the second event has addListener defined. 262 # Check that the second event has addListener defined.
297 self.assertEquals('noRules', dict_['events'][1]['name']) 263 self.assertEquals('noRules', dict_['events'][1]['name'])
298 self.assertEquals('add_rules_tester', dict_['name']) 264 self.assertEquals('add_rules_tester', dict_['name'])
299 self.assertEquals('noRules', dict_['events'][1]['name']) 265 self.assertEquals('noRules', dict_['events'][1]['name'])
300 self.assertEquals('callback', 266 self.assertEquals('callback',
301 dict_['events'][0]['byName']['addListener'][ 267 dict_['events'][0]['byName']['addListener'][
302 'parameters'][0]['name']) 268 'parameters'][0]['name'])
303 269
304 if __name__ == '__main__': 270 if __name__ == '__main__':
305 unittest.main() 271 unittest.main()
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/api_data_source.py ('k') | chrome/common/extensions/docs/server2/cron_servlet_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698