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
4 # found in the LICENSE file.
9 from future import Future
10 from reference_resolver import ReferenceResolver
11 from test_object_store import TestObjectStore
12 from test_util import Server2Path
13 from third_party.json_schema_compiler.model import Namespace
63 'baz_p1': {'type': 'any'},
64 'baz_p2': {'type': 'any'},
65 'baz_p3': {'type': 'any'}
69 'namespace': 'bar.bon',
101 'name': 'bar_bon_e1',
105 'name': 'bar_bon_e2',
109 'name': 'bar_bon_e3',
114 'bar_bon_p1': {'type': 'any'},
115 'bar_bon_p2': {'type': 'any'},
116 'bar_bon_p3': {'type': 'any'}
179 'bar_p1': {'type': 'any'},
180 'bar_p2': {'type': 'any'},
181 'bar_p3': {'$ref': 'bar_t1'}
236 'foo_p1': {'$ref': 'foo_t3'},
237 'foo_p2': {'type': 'any'},
238 'foo_p3': {'type': 'any'}
244 class _FakeAPIModels(object):
245 def __init__(self, apis):
249 return self._apis.keys()
251 def GetModel(self, name):
252 return Future(value=Namespace(self._apis[name], 'fake/path.json'))
255 class ReferenceResolverTest(unittest.TestCase):
257 self._base_path = Server2Path('test_data', 'test_json')
259 def _ReadLocalFile(self, filename):
260 with open(os.path.join(self._base_path, filename), 'r') as f:
263 def testGetLink(self):
264 resolver = ReferenceResolver(_FakeAPIModels(_TEST_DATA),
265 TestObjectStore('test'))
270 }, resolver.GetLink('foo', namespace='baz'))
272 'href': 'foo#type-foo_t1',
273 'text': 'foo.foo_t1',
275 }, resolver.GetLink('foo.foo_t1', namespace='baz'))
277 'href': 'baz#event-baz_e1',
280 }, resolver.GetLink('baz.baz_e1', namespace='baz'))
282 'href': 'baz#event-baz_e1',
285 }, resolver.GetLink('baz_e1', namespace='baz'))
287 'href': 'foo#method-foo_f1',
288 'text': 'foo.foo_f1',
290 }, resolver.GetLink('foo.foo_f1', namespace='baz'))
292 'href': 'foo#property-foo_p3',
293 'text': 'foo.foo_p3',
295 }, resolver.GetLink('foo.foo_p3', namespace='baz'))
297 'href': 'bar.bon#type-bar_bon_t3',
298 'text': 'bar.bon.bar_bon_t3',
300 }, resolver.GetLink('bar.bon.bar_bon_t3', namespace='baz'))
302 'href': 'bar.bon#property-bar_bon_p3',
303 'text': 'bar_bon_p3',
305 }, resolver.GetLink('bar_bon_p3', namespace='bar.bon'))
307 'href': 'bar.bon#property-bar_bon_p3',
308 'text': 'bar_bon_p3',
310 }, resolver.GetLink('bar.bon.bar_bon_p3', namespace='bar.bon'))
312 'href': 'bar#event-bar_e2',
315 }, resolver.GetLink('bar.bar_e2', namespace='bar'))
317 'href': 'bar#type-bon',
320 }, resolver.GetLink('bar.bon', namespace='bar'))
322 'href': 'foo#event-foo_t3-foo_t3_e1',
323 'text': 'foo_t3.foo_t3_e1',
325 }, resolver.GetLink('foo_t3.foo_t3_e1', namespace='foo'))
327 'href': 'foo#event-foo_t3-foo_t3_e1',
328 'text': 'foo_t3.foo_t3_e1',
330 }, resolver.GetLink('foo.foo_t3.foo_t3_e1', namespace='foo'))
332 'href': 'foo#event-foo_t3-foo_t3_e1',
333 'text': 'foo_t3.foo_t3_e1',
335 }, resolver.GetLink('foo.foo_p1.foo_t3_e1', namespace='foo'))
337 'href': 'bar#property-bar_t1-bar_t1_p1',
338 'text': 'bar.bar_t1.bar_t1_p1',
340 }, resolver.GetLink('bar.bar_p3.bar_t1_p1', namespace='foo'))
342 'href': 'bar#property-bar_t1-bar_t1_p1',
343 'text': 'bar_t1.bar_t1_p1',
345 }, resolver.GetLink('bar_p3.bar_t1_p1', namespace='bar'))
348 resolver.GetLink('bar.bar_p3.bar_t2_p1', namespace='bar'))
351 resolver.GetLink('bar.bon.bar_e3', namespace='bar'))
354 resolver.GetLink('bar_p3', namespace='baz.bon'))
357 resolver.GetLink('falafel.faf', namespace='a'))
360 resolver.GetLink('bar_p3', namespace='foo'))
362 if __name__ == '__main__':