| 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 os | 6 import os |
| 7 import unittest | 7 import unittest |
| 8 | 8 |
| 9 from future import Future | 9 from future import Future |
| 10 from reference_resolver import ReferenceResolver | 10 from reference_resolver import ReferenceResolver |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 ], | 234 ], |
| 235 'properties': { | 235 'properties': { |
| 236 'foo_p1': {'$ref': 'foo_t3'}, | 236 'foo_p1': {'$ref': 'foo_t3'}, |
| 237 'foo_p2': {'type': 'any'}, | 237 'foo_p2': {'type': 'any'}, |
| 238 'foo_p3': {'type': 'any'} | 238 'foo_p3': {'type': 'any'} |
| 239 } | 239 } |
| 240 } | 240 } |
| 241 } | 241 } |
| 242 | 242 |
| 243 | 243 |
| 244 class _FakePlatformBundle(object): |
| 245 def __init__(self): |
| 246 self.platforms = ('apps', 'extensions') |
| 247 |
| 248 def GetAPIModels(self, platform): |
| 249 if platform == 'apps': |
| 250 return _FakeAPIModels(_TEST_DATA) |
| 251 # Only includes some of the data in the 'extensions' APIModels. |
| 252 # ReferenceResolver will have to look at other platforms to resolve 'foo'. |
| 253 return _FakeAPIModels({ |
| 254 'bar': _TEST_DATA['bar'], |
| 255 'bar.bon': _TEST_DATA['bar.bon'], |
| 256 'baz': _TEST_DATA['baz'] |
| 257 }) |
| 258 |
| 259 |
| 244 class _FakeAPIModels(object): | 260 class _FakeAPIModels(object): |
| 245 def __init__(self, apis): | 261 def __init__(self, apis): |
| 246 self._apis = apis | 262 self._apis = apis |
| 247 | 263 |
| 248 def GetNames(self): | 264 def GetNames(self): |
| 249 return self._apis.keys() | 265 return self._apis.keys() |
| 250 | 266 |
| 251 def GetModel(self, name): | 267 def GetModel(self, name): |
| 252 return Future(value=Namespace(self._apis[name], 'fake/path.json')) | 268 return Future(value=Namespace(self._apis[name], 'fake/path.json')) |
| 253 | 269 |
| 254 | 270 |
| 255 class ReferenceResolverTest(unittest.TestCase): | 271 class ReferenceResolverTest(unittest.TestCase): |
| 256 def setUp(self): | 272 def setUp(self): |
| 257 self._base_path = Server2Path('test_data', 'test_json') | 273 self._base_path = Server2Path('test_data', 'test_json') |
| 258 | 274 |
| 259 def _ReadLocalFile(self, filename): | 275 def _ReadLocalFile(self, filename): |
| 260 with open(os.path.join(self._base_path, filename), 'r') as f: | 276 with open(os.path.join(self._base_path, filename), 'r') as f: |
| 261 return f.read() | 277 return f.read() |
| 262 | 278 |
| 263 def testGetLink(self): | 279 def testGetLink(self): |
| 264 resolver = ReferenceResolver(_FakeAPIModels(_TEST_DATA), | 280 apps_resolver = ReferenceResolver( |
| 265 TestObjectStore('test')) | 281 _FakePlatformBundle().GetAPIModels('apps'), |
| 282 TestObjectStore('apps/test')) |
| 283 extensions_resolver = ReferenceResolver( |
| 284 _FakePlatformBundle().GetAPIModels('extensions'), |
| 285 TestObjectStore('extensions/test')) |
| 286 |
| 266 self.assertEqual({ | 287 self.assertEqual({ |
| 267 'href': 'foo', | 288 'href': 'foo', |
| 268 'text': 'foo', | 289 'text': 'foo', |
| 269 'name': 'foo' | 290 'name': 'foo' |
| 270 }, resolver.GetLink('foo', namespace='baz')) | 291 }, apps_resolver.GetLink('foo', namespace='baz')) |
| 271 self.assertEqual({ | 292 self.assertEqual({ |
| 272 'href': 'foo#type-foo_t1', | 293 'href': 'foo#type-foo_t1', |
| 273 'text': 'foo.foo_t1', | 294 'text': 'foo.foo_t1', |
| 274 'name': 'foo_t1' | 295 'name': 'foo_t1' |
| 275 }, resolver.GetLink('foo.foo_t1', namespace='baz')) | 296 }, apps_resolver.GetLink('foo.foo_t1', namespace='baz')) |
| 276 self.assertEqual({ | 297 self.assertEqual({ |
| 277 'href': 'baz#event-baz_e1', | 298 'href': 'baz#event-baz_e1', |
| 278 'text': 'baz_e1', | 299 'text': 'baz_e1', |
| 279 'name': 'baz_e1' | 300 'name': 'baz_e1' |
| 280 }, resolver.GetLink('baz.baz_e1', namespace='baz')) | 301 }, apps_resolver.GetLink('baz.baz_e1', namespace='baz')) |
| 281 self.assertEqual({ | 302 self.assertEqual({ |
| 282 'href': 'baz#event-baz_e1', | 303 'href': 'baz#event-baz_e1', |
| 283 'text': 'baz_e1', | 304 'text': 'baz_e1', |
| 284 'name': 'baz_e1' | 305 'name': 'baz_e1' |
| 285 }, resolver.GetLink('baz_e1', namespace='baz')) | 306 }, apps_resolver.GetLink('baz_e1', namespace='baz')) |
| 286 self.assertEqual({ | 307 self.assertEqual({ |
| 287 'href': 'foo#method-foo_f1', | 308 'href': 'foo#method-foo_f1', |
| 288 'text': 'foo.foo_f1', | 309 'text': 'foo.foo_f1', |
| 289 'name': 'foo_f1' | 310 'name': 'foo_f1' |
| 290 }, resolver.GetLink('foo.foo_f1', namespace='baz')) | 311 }, apps_resolver.GetLink('foo.foo_f1', namespace='baz')) |
| 291 self.assertEqual({ | 312 self.assertEqual({ |
| 292 'href': 'foo#property-foo_p3', | 313 'href': 'foo#property-foo_p3', |
| 293 'text': 'foo.foo_p3', | 314 'text': 'foo.foo_p3', |
| 294 'name': 'foo_p3' | 315 'name': 'foo_p3' |
| 295 }, resolver.GetLink('foo.foo_p3', namespace='baz')) | 316 }, apps_resolver.GetLink('foo.foo_p3', namespace='baz')) |
| 296 self.assertEqual({ | 317 self.assertEqual({ |
| 297 'href': 'bar.bon#type-bar_bon_t3', | 318 'href': 'bar.bon#type-bar_bon_t3', |
| 298 'text': 'bar.bon.bar_bon_t3', | 319 'text': 'bar.bon.bar_bon_t3', |
| 299 'name': 'bar_bon_t3' | 320 'name': 'bar_bon_t3' |
| 300 }, resolver.GetLink('bar.bon.bar_bon_t3', namespace='baz')) | 321 }, apps_resolver.GetLink('bar.bon.bar_bon_t3', namespace='baz')) |
| 301 self.assertEqual({ | 322 self.assertEqual({ |
| 302 'href': 'bar.bon#property-bar_bon_p3', | 323 'href': 'bar.bon#property-bar_bon_p3', |
| 303 'text': 'bar_bon_p3', | 324 'text': 'bar_bon_p3', |
| 304 'name': 'bar_bon_p3' | 325 'name': 'bar_bon_p3' |
| 305 }, resolver.GetLink('bar_bon_p3', namespace='bar.bon')) | 326 }, apps_resolver.GetLink('bar_bon_p3', namespace='bar.bon')) |
| 306 self.assertEqual({ | 327 self.assertEqual({ |
| 307 'href': 'bar.bon#property-bar_bon_p3', | 328 'href': 'bar.bon#property-bar_bon_p3', |
| 308 'text': 'bar_bon_p3', | 329 'text': 'bar_bon_p3', |
| 309 'name': 'bar_bon_p3' | 330 'name': 'bar_bon_p3' |
| 310 }, resolver.GetLink('bar.bon.bar_bon_p3', namespace='bar.bon')) | 331 }, apps_resolver.GetLink('bar.bon.bar_bon_p3', namespace='bar.bon')) |
| 311 self.assertEqual({ | 332 self.assertEqual({ |
| 312 'href': 'bar#event-bar_e2', | 333 'href': 'bar#event-bar_e2', |
| 313 'text': 'bar_e2', | 334 'text': 'bar_e2', |
| 314 'name': 'bar_e2' | 335 'name': 'bar_e2' |
| 315 }, resolver.GetLink('bar.bar_e2', namespace='bar')) | 336 }, apps_resolver.GetLink('bar.bar_e2', namespace='bar')) |
| 316 self.assertEqual({ | 337 self.assertEqual({ |
| 317 'href': 'bar#type-bon', | 338 'href': 'bar#type-bon', |
| 318 'text': 'bon', | 339 'text': 'bon', |
| 319 'name': 'bon' | 340 'name': 'bon' |
| 320 }, resolver.GetLink('bar.bon', namespace='bar')) | 341 }, apps_resolver.GetLink('bar.bon', namespace='bar')) |
| 321 self.assertEqual({ | 342 self.assertEqual({ |
| 322 'href': 'foo#event-foo_t3-foo_t3_e1', | 343 'href': 'foo#event-foo_t3-foo_t3_e1', |
| 323 'text': 'foo_t3.foo_t3_e1', | 344 'text': 'foo_t3.foo_t3_e1', |
| 324 'name': 'foo_t3_e1' | 345 'name': 'foo_t3_e1' |
| 325 }, resolver.GetLink('foo_t3.foo_t3_e1', namespace='foo')) | 346 }, apps_resolver.GetLink('foo_t3.foo_t3_e1', namespace='foo')) |
| 326 self.assertEqual({ | 347 self.assertEqual({ |
| 327 'href': 'foo#event-foo_t3-foo_t3_e1', | 348 'href': 'foo#event-foo_t3-foo_t3_e1', |
| 328 'text': 'foo_t3.foo_t3_e1', | 349 'text': 'foo_t3.foo_t3_e1', |
| 329 'name': 'foo_t3_e1' | 350 'name': 'foo_t3_e1' |
| 330 }, resolver.GetLink('foo.foo_t3.foo_t3_e1', namespace='foo')) | 351 }, apps_resolver.GetLink('foo.foo_t3.foo_t3_e1', namespace='foo')) |
| 331 self.assertEqual({ | 352 self.assertEqual({ |
| 332 'href': 'foo#event-foo_t3-foo_t3_e1', | 353 'href': 'foo#event-foo_t3-foo_t3_e1', |
| 333 'text': 'foo_t3.foo_t3_e1', | 354 'text': 'foo_t3.foo_t3_e1', |
| 334 'name': 'foo_t3_e1' | 355 'name': 'foo_t3_e1' |
| 335 }, resolver.GetLink('foo.foo_p1.foo_t3_e1', namespace='foo')) | 356 }, apps_resolver.GetLink('foo.foo_p1.foo_t3_e1', namespace='foo')) |
| 336 self.assertEqual({ | 357 self.assertEqual({ |
| 337 'href': 'bar#property-bar_t1-bar_t1_p1', | 358 'href': 'bar#property-bar_t1-bar_t1_p1', |
| 338 'text': 'bar.bar_t1.bar_t1_p1', | 359 'text': 'bar.bar_t1.bar_t1_p1', |
| 339 'name': 'bar_t1_p1' | 360 'name': 'bar_t1_p1' |
| 340 }, resolver.GetLink('bar.bar_p3.bar_t1_p1', namespace='foo')) | 361 }, apps_resolver.GetLink('bar.bar_p3.bar_t1_p1', namespace='foo')) |
| 362 # Test extensions_resolver. |
| 363 self.assertEqual({ |
| 364 'href': 'bar#property-bar_t1-bar_t1_p1', |
| 365 'text': 'bar.bar_t1.bar_t1_p1', |
| 366 'name': 'bar_t1_p1' |
| 367 }, extensions_resolver.GetLink('bar.bar_p3.bar_t1_p1', namespace='foo')) |
| 341 self.assertEqual({ | 368 self.assertEqual({ |
| 342 'href': 'bar#property-bar_t1-bar_t1_p1', | 369 'href': 'bar#property-bar_t1-bar_t1_p1', |
| 343 'text': 'bar_t1.bar_t1_p1', | 370 'text': 'bar_t1.bar_t1_p1', |
| 344 'name': 'bar_t1_p1' | 371 'name': 'bar_t1_p1' |
| 345 }, resolver.GetLink('bar_p3.bar_t1_p1', namespace='bar')) | 372 }, apps_resolver.GetLink('bar_p3.bar_t1_p1', namespace='bar')) |
| 346 self.assertEqual( | 373 self.assertEqual( |
| 347 None, | 374 None, |
| 348 resolver.GetLink('bar.bar_p3.bar_t2_p1', namespace='bar')) | 375 apps_resolver.GetLink('bar.bar_p3.bar_t2_p1', namespace='bar')) |
| 349 self.assertEqual( | 376 self.assertEqual( |
| 350 None, | 377 None, |
| 351 resolver.GetLink('bar.bon.bar_e3', namespace='bar')) | 378 apps_resolver.GetLink('bar.bon.bar_e3', namespace='bar')) |
| 352 self.assertEqual( | 379 self.assertEqual( |
| 353 None, | 380 None, |
| 354 resolver.GetLink('bar_p3', namespace='baz.bon')) | 381 apps_resolver.GetLink('bar_p3', namespace='baz.bon')) |
| 355 self.assertEqual( | 382 self.assertEqual( |
| 356 None, | 383 None, |
| 357 resolver.GetLink('falafel.faf', namespace='a')) | 384 apps_resolver.GetLink('falafel.faf', namespace='a')) |
| 358 self.assertEqual( | 385 self.assertEqual( |
| 359 None, | 386 None, |
| 360 resolver.GetLink('bar_p3', namespace='foo')) | 387 apps_resolver.GetLink('bar_p3', namespace='foo')) |
| 388 # Exists in apps but not extensions. |
| 389 self.assertEqual( |
| 390 None, |
| 391 extensions_resolver.GetLink('foo.foo_p3', namespace='baz')) |
| 361 | 392 |
| 362 if __name__ == '__main__': | 393 if __name__ == '__main__': |
| 363 unittest.main() | 394 unittest.main() |
| OLD | NEW |