| OLD | NEW |
| 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 24 matching lines...) Expand all Loading... |
| 35 if type_['name'] == name: | 35 if type_['name'] == name: |
| 36 return type_ | 36 return type_ |
| 37 | 37 |
| 38 | 38 |
| 39 class _FakeAvailabilityFinder(object): | 39 class _FakeAvailabilityFinder(object): |
| 40 | 40 |
| 41 def GetApiAvailability(self, version): | 41 def GetApiAvailability(self, version): |
| 42 return ChannelInfo('stable', '396', 5) | 42 return ChannelInfo('stable', '396', 5) |
| 43 | 43 |
| 44 | 44 |
| 45 class _FakeSamplesDataSource(object): | |
| 46 | |
| 47 def Create(self, request): | |
| 48 return {} | |
| 49 | |
| 50 | |
| 51 # Sad irony :( | |
| 52 class _FakeAPIDataSource(object): | |
| 53 | |
| 54 def __init__(self, json_data): | |
| 55 self._json = json_data | |
| 56 | |
| 57 def Create(self, *args, **kwargs): | |
| 58 return self | |
| 59 | |
| 60 def get(self, key, disable_refs=False): | |
| 61 if key not in self._json: | |
| 62 raise FileNotFoundError(key) | |
| 63 return self._json[key] | |
| 64 | |
| 65 | |
| 66 class _FakeNamespace(object): | |
| 67 | |
| 68 def __init__(self): | |
| 69 self.documentation_options = {} | |
| 70 | |
| 71 | |
| 72 class _FakeAPIModels(object): | |
| 73 | |
| 74 def __init__(self, names): | |
| 75 self._names = names | |
| 76 | |
| 77 def GetNames(self): | |
| 78 return self._names | |
| 79 | |
| 80 def GetModel(self, name): | |
| 81 return Future(value=_FakeNamespace()) | |
| 82 | |
| 83 | |
| 84 class _FakeTemplateCache(object): | 45 class _FakeTemplateCache(object): |
| 85 | 46 |
| 86 def GetFromFile(self, key): | 47 def GetFromFile(self, key): |
| 87 return Future(value='handlebar %s' % key) | 48 return Future(value='handlebar %s' % key) |
| 88 | 49 |
| 89 | 50 |
| 90 class APIDataSourceTest(unittest.TestCase): | 51 class APIDataSourceTest(unittest.TestCase): |
| 91 | 52 |
| 92 def setUp(self): | 53 def setUp(self): |
| 93 self._base_path = Server2Path('test_data', 'test_json') | 54 self._base_path = Server2Path('test_data', 'test_json') |
| (...skipping 19 matching lines...) Expand all Loading... |
| 113 def _ReadLocalFile(self, filename): | 74 def _ReadLocalFile(self, filename): |
| 114 with open(os.path.join(self._base_path, filename), 'r') as f: | 75 with open(os.path.join(self._base_path, filename), 'r') as f: |
| 115 return f.read() | 76 return f.read() |
| 116 | 77 |
| 117 def _LoadJSON(self, filename): | 78 def _LoadJSON(self, filename): |
| 118 return json.loads(self._ReadLocalFile(filename)) | 79 return json.loads(self._ReadLocalFile(filename)) |
| 119 | 80 |
| 120 def testCreateId(self): | 81 def testCreateId(self): |
| 121 dict_ = _JSCModel('tester', | 82 dict_ = _JSCModel('tester', |
| 122 self._api_models, | 83 self._api_models, |
| 123 False, | |
| 124 _FakeAvailabilityFinder(), | 84 _FakeAvailabilityFinder(), |
| 125 self._json_cache, | 85 self._json_cache, |
| 126 _FakeTemplateCache(), | 86 _FakeTemplateCache(), |
| 127 self._features_bundle, | 87 self._features_bundle, |
| 128 None).ToDict() | 88 None).ToDict() |
| 129 self.assertEquals('type-TypeA', dict_['types'][0]['id']) | 89 self.assertEquals('type-TypeA', dict_['types'][0]['id']) |
| 130 self.assertEquals('property-TypeA-b', | 90 self.assertEquals('property-TypeA-b', |
| 131 dict_['types'][0]['properties'][0]['id']) | 91 dict_['types'][0]['properties'][0]['id']) |
| 132 self.assertEquals('method-get', dict_['functions'][0]['id']) | 92 self.assertEquals('method-get', dict_['functions'][0]['id']) |
| 133 self.assertEquals('event-EventA', dict_['events'][0]['id']) | 93 self.assertEquals('event-EventA', dict_['events'][0]['id']) |
| 134 | 94 |
| 135 # TODO(kalman): re-enable this when we have a rebase option. | 95 # TODO(kalman): re-enable this when we have a rebase option. |
| 136 def DISABLED_testToDict(self): | 96 def DISABLED_testToDict(self): |
| 137 expected_json = self._LoadJSON('expected_tester.json') | 97 expected_json = self._LoadJSON('expected_tester.json') |
| 138 dict_ = _JSCModel('tester', | 98 dict_ = _JSCModel('tester', |
| 139 self._api_models, | 99 self._api_models, |
| 140 False, | |
| 141 _FakeAvailabilityFinder(), | 100 _FakeAvailabilityFinder(), |
| 142 self._json_cache, | 101 self._json_cache, |
| 143 _FakeTemplateCache(), | 102 _FakeTemplateCache(), |
| 144 self._features_bundle, | 103 self._features_bundle, |
| 145 None).ToDict() | 104 None).ToDict() |
| 146 self.assertEquals(expected_json, dict_) | 105 self.assertEquals(expected_json, dict_) |
| 147 | 106 |
| 148 def testFormatValue(self): | 107 def testFormatValue(self): |
| 149 self.assertEquals('1,234,567', _FormatValue(1234567)) | 108 self.assertEquals('1,234,567', _FormatValue(1234567)) |
| 150 self.assertEquals('67', _FormatValue(67)) | 109 self.assertEquals('67', _FormatValue(67)) |
| 151 self.assertEquals('234,567', _FormatValue(234567)) | 110 self.assertEquals('234,567', _FormatValue(234567)) |
| 152 | 111 |
| 153 def testGetApiAvailability(self): | 112 def testGetApiAvailability(self): |
| 154 api_availabilities = { | 113 api_availabilities = { |
| 155 'bluetooth': ChannelInfo('dev', CANNED_BRANCHES[28], 28), | 114 'bluetooth': ChannelInfo('dev', CANNED_BRANCHES[28], 28), |
| 156 'contextMenus': ChannelInfo('trunk', CANNED_BRANCHES['trunk'], 'trunk'), | 115 'contextMenus': ChannelInfo('trunk', CANNED_BRANCHES['trunk'], 'trunk'), |
| 157 'jsonStableAPI': ChannelInfo('stable', CANNED_BRANCHES[20], 20), | 116 'jsonStableAPI': ChannelInfo('stable', CANNED_BRANCHES[20], 20), |
| 158 'idle': ChannelInfo('stable', CANNED_BRANCHES[5], 5), | 117 'idle': ChannelInfo('stable', CANNED_BRANCHES[5], 5), |
| 159 'input.ime': ChannelInfo('stable', CANNED_BRANCHES[18], 18), | 118 'input.ime': ChannelInfo('stable', CANNED_BRANCHES[18], 18), |
| 160 'tabs': ChannelInfo('stable', CANNED_BRANCHES[18], 18) | 119 'tabs': ChannelInfo('stable', CANNED_BRANCHES[18], 18) |
| 161 } | 120 } |
| 162 for api_name, availability in api_availabilities.iteritems(): | 121 for api_name, availability in api_availabilities.iteritems(): |
| 163 model = _JSCModel(api_name, | 122 model = _JSCModel(api_name, |
| 164 self._avail_api_models, | 123 self._avail_api_models, |
| 165 True, | |
| 166 self._avail_finder, | 124 self._avail_finder, |
| 167 self._avail_json_cache, | 125 self._avail_json_cache, |
| 168 _FakeTemplateCache(), | 126 _FakeTemplateCache(), |
| 169 self._features_bundle, | 127 self._features_bundle, |
| 170 None) | 128 None) |
| 171 self.assertEquals(availability, model._GetApiAvailability()) | 129 self.assertEquals(availability, model._GetApiAvailability()) |
| 172 | 130 |
| 173 def testGetIntroList(self): | 131 def testGetIntroList(self): |
| 174 model = _JSCModel('tester', | 132 model = _JSCModel('tester', |
| 175 self._api_models, | 133 self._api_models, |
| 176 False, | |
| 177 _FakeAvailabilityFinder(), | 134 _FakeAvailabilityFinder(), |
| 178 self._json_cache, | 135 self._json_cache, |
| 179 _FakeTemplateCache(), | 136 _FakeTemplateCache(), |
| 180 self._features_bundle, | 137 self._features_bundle, |
| 181 None) | 138 None) |
| 182 expected_list = [ | 139 expected_list = [ |
| 183 { 'title': 'Description', | 140 { 'title': 'Description', |
| 184 'content': [ | 141 'content': [ |
| 185 { 'text': 'a test api' } | 142 { 'text': 'a test api' } |
| 186 ] | 143 ] |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 # Duplicates are an error. | 195 # Duplicates are an error. |
| 239 self.assertRaises(AssertionError, _GetEventByNameFromEvents, events) | 196 self.assertRaises(AssertionError, _GetEventByNameFromEvents, events) |
| 240 | 197 |
| 241 def _FakeLoadAddRulesSchema(self): | 198 def _FakeLoadAddRulesSchema(self): |
| 242 events = self._LoadJSON('add_rules_def_test.json') | 199 events = self._LoadJSON('add_rules_def_test.json') |
| 243 return _GetEventByNameFromEvents(events) | 200 return _GetEventByNameFromEvents(events) |
| 244 | 201 |
| 245 def testAddRules(self): | 202 def testAddRules(self): |
| 246 dict_ = _JSCModel('add_rules_tester', | 203 dict_ = _JSCModel('add_rules_tester', |
| 247 self._api_models, | 204 self._api_models, |
| 248 False, | |
| 249 _FakeAvailabilityFinder(), | 205 _FakeAvailabilityFinder(), |
| 250 self._json_cache, | 206 self._json_cache, |
| 251 _FakeTemplateCache(), | 207 _FakeTemplateCache(), |
| 252 self._features_bundle, | 208 self._features_bundle, |
| 253 self._FakeLoadAddRulesSchema).ToDict() | 209 self._FakeLoadAddRulesSchema).ToDict() |
| 254 | 210 |
| 255 # Check that the first event has the addRulesFunction defined. | 211 # Check that the first event has the addRulesFunction defined. |
| 256 self.assertEquals('add_rules_tester', dict_['name']) | 212 self.assertEquals('add_rules_tester', dict_['name']) |
| 257 self.assertEquals('rules', dict_['events'][0]['name']) | 213 self.assertEquals('rules', dict_['events'][0]['name']) |
| 258 self.assertEquals('notable_name_to_check_for', | 214 self.assertEquals('notable_name_to_check_for', |
| 259 dict_['events'][0]['byName']['addRules'][ | 215 dict_['events'][0]['byName']['addRules'][ |
| 260 'parameters'][0]['name']) | 216 'parameters'][0]['name']) |
| 261 | 217 |
| 262 # Check that the second event has addListener defined. | 218 # Check that the second event has addListener defined. |
| 263 self.assertEquals('noRules', dict_['events'][1]['name']) | 219 self.assertEquals('noRules', dict_['events'][1]['name']) |
| 264 self.assertEquals('add_rules_tester', dict_['name']) | 220 self.assertEquals('add_rules_tester', dict_['name']) |
| 265 self.assertEquals('noRules', dict_['events'][1]['name']) | 221 self.assertEquals('noRules', dict_['events'][1]['name']) |
| 266 self.assertEquals('callback', | 222 self.assertEquals('callback', |
| 267 dict_['events'][0]['byName']['addListener'][ | 223 dict_['events'][0]['byName']['addListener'][ |
| 268 'parameters'][0]['name']) | 224 'parameters'][0]['name']) |
| 269 | 225 |
| 270 if __name__ == '__main__': | 226 if __name__ == '__main__': |
| 271 unittest.main() | 227 unittest.main() |
| OLD | NEW |