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__':