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

Side by Side Diff: chrome/common/extensions/docs/server2/reference_resolver_test.py

Issue 213673002: Add support for "documented_in" annotation in json api schema (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Bump version (again) Created 6 years, 8 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
« no previous file with comments | « chrome/common/extensions/docs/server2/reference_resolver.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 file_system import FileNotFoundError 11 from file_system import FileNotFoundError
12 from future import Future
12 from reference_resolver import ReferenceResolver 13 from reference_resolver import ReferenceResolver
13 from test_object_store import TestObjectStore 14 from test_object_store import TestObjectStore
14 from test_util import Server2Path 15 from test_util import Server2Path
15 16
16 17
17 class FakeAPIDataSource(object): 18 class _FakeAPIDataSource(object):
18 def __init__(self, json_data): 19 def __init__(self, json_data):
19 self._json = json_data 20 self._json = json_data
20 21
21 def get(self, key, disable_refs=False): 22 def get(self, key, disable_refs=False):
22 assert disable_refs, 'ReferenceResolve should be disabling refs' 23 assert disable_refs, 'ReferenceResolve should be disabling refs'
23 if key not in self._json: 24 if key not in self._json:
24 raise FileNotFoundError(key) 25 raise FileNotFoundError(key)
25 return self._json[key] 26 return self._json[key]
26 27
27 28
28 class FakeAPIModels(object): 29 class _FakeNamespace(object):
30 def __init__(self):
31 self.documentation_options = {}
32
33
34 class _FakeAPIModels(object):
29 def __init__(self, names): 35 def __init__(self, names):
30 self._names = names 36 self._names = names
31 37
32 def GetNames(self): 38 def GetNames(self):
33 return self._names 39 return self._names
34 40
41 def GetModel(self, name):
42 return Future(value=_FakeNamespace())
35 43
36 class APIDataSourceTest(unittest.TestCase): 44
45 class ReferenceResolverTest(unittest.TestCase):
37 def setUp(self): 46 def setUp(self):
38 self._base_path = Server2Path('test_data', 'test_json') 47 self._base_path = Server2Path('test_data', 'test_json')
39 48
40 def _ReadLocalFile(self, filename): 49 def _ReadLocalFile(self, filename):
41 with open(os.path.join(self._base_path, filename), 'r') as f: 50 with open(os.path.join(self._base_path, filename), 'r') as f:
42 return f.read() 51 return f.read()
43 52
44 def testGetLink(self): 53 def testGetLink(self):
45 test_data = json.loads(self._ReadLocalFile('fake_data_source.json')) 54 test_data = json.loads(self._ReadLocalFile('fake_data_source.json'))
46 resolver = ReferenceResolver(FakeAPIDataSource(test_data), 55 resolver = ReferenceResolver(_FakeAPIDataSource(test_data),
47 FakeAPIModels(test_data.keys()), 56 _FakeAPIModels(test_data.keys()),
48 TestObjectStore('test')) 57 TestObjectStore('test'))
49 self.assertEqual({ 58 self.assertEqual({
50 'href': 'foo.html', 59 'href': 'foo',
51 'text': 'foo', 60 'text': 'foo',
52 'name': 'foo' 61 'name': 'foo'
53 }, resolver.GetLink('foo', namespace='baz')) 62 }, resolver.GetLink('foo', namespace='baz'))
54 self.assertEqual({ 63 self.assertEqual({
55 'href': 'foo.html#type-foo_t1', 64 'href': 'foo#type-foo_t1',
56 'text': 'foo.foo_t1', 65 'text': 'foo.foo_t1',
57 'name': 'foo_t1' 66 'name': 'foo_t1'
58 }, resolver.GetLink('foo.foo_t1', namespace='baz')) 67 }, resolver.GetLink('foo.foo_t1', namespace='baz'))
59 self.assertEqual({ 68 self.assertEqual({
60 'href': 'baz.html#event-baz_e1', 69 'href': 'baz#event-baz_e1',
61 'text': 'baz_e1', 70 'text': 'baz_e1',
62 'name': 'baz_e1' 71 'name': 'baz_e1'
63 }, resolver.GetLink('baz.baz_e1', namespace='baz')) 72 }, resolver.GetLink('baz.baz_e1', namespace='baz'))
64 self.assertEqual({ 73 self.assertEqual({
65 'href': 'baz.html#event-baz_e1', 74 'href': 'baz#event-baz_e1',
66 'text': 'baz_e1', 75 'text': 'baz_e1',
67 'name': 'baz_e1' 76 'name': 'baz_e1'
68 }, resolver.GetLink('baz_e1', namespace='baz')) 77 }, resolver.GetLink('baz_e1', namespace='baz'))
69 self.assertEqual({ 78 self.assertEqual({
70 'href': 'foo.html#method-foo_f1', 79 'href': 'foo#method-foo_f1',
71 'text': 'foo.foo_f1', 80 'text': 'foo.foo_f1',
72 'name': 'foo_f1' 81 'name': 'foo_f1'
73 }, resolver.GetLink('foo.foo_f1', namespace='baz')) 82 }, resolver.GetLink('foo.foo_f1', namespace='baz'))
74 self.assertEqual({ 83 self.assertEqual({
75 'href': 'foo.html#property-foo_p3', 84 'href': 'foo#property-foo_p3',
76 'text': 'foo.foo_p3', 85 'text': 'foo.foo_p3',
77 'name': 'foo_p3' 86 'name': 'foo_p3'
78 }, resolver.GetLink('foo.foo_p3', namespace='baz')) 87 }, resolver.GetLink('foo.foo_p3', namespace='baz'))
79 self.assertEqual({ 88 self.assertEqual({
80 'href': 'bar.bon.html#type-bar_bon_t3', 89 'href': 'bar.bon#type-bar_bon_t3',
81 'text': 'bar.bon.bar_bon_t3', 90 'text': 'bar.bon.bar_bon_t3',
82 'name': 'bar_bon_t3' 91 'name': 'bar_bon_t3'
83 }, resolver.GetLink('bar.bon.bar_bon_t3', namespace='baz')) 92 }, resolver.GetLink('bar.bon.bar_bon_t3', namespace='baz'))
84 self.assertEqual({ 93 self.assertEqual({
85 'href': 'bar.bon.html#property-bar_bon_p3', 94 'href': 'bar.bon#property-bar_bon_p3',
86 'text': 'bar_bon_p3', 95 'text': 'bar_bon_p3',
87 'name': 'bar_bon_p3' 96 'name': 'bar_bon_p3'
88 }, resolver.GetLink('bar_bon_p3', namespace='bar.bon')) 97 }, resolver.GetLink('bar_bon_p3', namespace='bar.bon'))
89 self.assertEqual({ 98 self.assertEqual({
90 'href': 'bar.bon.html#property-bar_bon_p3', 99 'href': 'bar.bon#property-bar_bon_p3',
91 'text': 'bar_bon_p3', 100 'text': 'bar_bon_p3',
92 'name': 'bar_bon_p3' 101 'name': 'bar_bon_p3'
93 }, resolver.GetLink('bar.bon.bar_bon_p3', namespace='bar.bon')) 102 }, resolver.GetLink('bar.bon.bar_bon_p3', namespace='bar.bon'))
94 self.assertEqual({ 103 self.assertEqual({
95 'href': 'bar.html#event-bar_e2', 104 'href': 'bar#event-bar_e2',
96 'text': 'bar_e2', 105 'text': 'bar_e2',
97 'name': 'bar_e2' 106 'name': 'bar_e2'
98 }, resolver.GetLink('bar.bar_e2', namespace='bar')) 107 }, resolver.GetLink('bar.bar_e2', namespace='bar'))
99 self.assertEqual({ 108 self.assertEqual({
100 'href': 'bar.html#type-bon', 109 'href': 'bar#type-bon',
101 'text': 'bon', 110 'text': 'bon',
102 'name': 'bon' 111 'name': 'bon'
103 }, resolver.GetLink('bar.bon', namespace='bar')) 112 }, resolver.GetLink('bar.bon', namespace='bar'))
104 self.assertEqual({ 113 self.assertEqual({
105 'href': 'foo.html#event-foo_t3-foo_t3_e1', 114 'href': 'foo#event-foo_t3-foo_t3_e1',
106 'text': 'foo_t3.foo_t3_e1', 115 'text': 'foo_t3.foo_t3_e1',
107 'name': 'foo_t3_e1' 116 'name': 'foo_t3_e1'
108 }, resolver.GetLink('foo_t3.foo_t3_e1', namespace='foo')) 117 }, resolver.GetLink('foo_t3.foo_t3_e1', namespace='foo'))
109 self.assertEqual({ 118 self.assertEqual({
110 'href': 'foo.html#event-foo_t3-foo_t3_e1', 119 'href': 'foo#event-foo_t3-foo_t3_e1',
111 'text': 'foo_t3.foo_t3_e1', 120 'text': 'foo_t3.foo_t3_e1',
112 'name': 'foo_t3_e1' 121 'name': 'foo_t3_e1'
113 }, resolver.GetLink('foo.foo_t3.foo_t3_e1', namespace='foo')) 122 }, resolver.GetLink('foo.foo_t3.foo_t3_e1', namespace='foo'))
114 self.assertEqual({ 123 self.assertEqual({
115 'href': 'foo.html#event-foo_t3-foo_t3_e1', 124 'href': 'foo#event-foo_t3-foo_t3_e1',
116 'text': 'foo_t3.foo_t3_e1', 125 'text': 'foo_t3.foo_t3_e1',
117 'name': 'foo_t3_e1' 126 'name': 'foo_t3_e1'
118 }, resolver.GetLink('foo.foo_p1.foo_t3_e1', namespace='foo')) 127 }, resolver.GetLink('foo.foo_p1.foo_t3_e1', namespace='foo'))
119 self.assertEqual({ 128 self.assertEqual({
120 'href': 'bar.html#property-bar_t1-bar_t1_p1', 129 'href': 'bar#property-bar_t1-bar_t1_p1',
121 'text': 'bar.bar_t1.bar_t1_p1', 130 'text': 'bar.bar_t1.bar_t1_p1',
122 'name': 'bar_t1_p1' 131 'name': 'bar_t1_p1'
123 }, resolver.GetLink('bar.bar_p3.bar_t1_p1', namespace='foo')) 132 }, resolver.GetLink('bar.bar_p3.bar_t1_p1', namespace='foo'))
124 self.assertEqual({ 133 self.assertEqual({
125 'href': 'bar.html#property-bar_t1-bar_t1_p1', 134 'href': 'bar#property-bar_t1-bar_t1_p1',
126 'text': 'bar_t1.bar_t1_p1', 135 'text': 'bar_t1.bar_t1_p1',
127 'name': 'bar_t1_p1' 136 'name': 'bar_t1_p1'
128 }, resolver.GetLink('bar_p3.bar_t1_p1', namespace='bar')) 137 }, resolver.GetLink('bar_p3.bar_t1_p1', namespace='bar'))
129 self.assertEqual( 138 self.assertEqual(
130 None, 139 None,
131 resolver.GetLink('bar.bar_p3.bar_t2_p1', namespace='bar')) 140 resolver.GetLink('bar.bar_p3.bar_t2_p1', namespace='bar'))
132 self.assertEqual( 141 self.assertEqual(
133 None, 142 None,
134 resolver.GetLink('bar.bon.bar_e3', namespace='bar')) 143 resolver.GetLink('bar.bon.bar_e3', namespace='bar'))
135 self.assertEqual( 144 self.assertEqual(
136 None, 145 None,
137 resolver.GetLink('bar_p3', namespace='baz.bon')) 146 resolver.GetLink('bar_p3', namespace='baz.bon'))
138 self.assertEqual( 147 self.assertEqual(
139 None, 148 None,
140 resolver.GetLink('falafel.faf', namespace='a')) 149 resolver.GetLink('falafel.faf', namespace='a'))
141 self.assertEqual( 150 self.assertEqual(
142 None, 151 None,
143 resolver.GetLink('bar_p3', namespace='foo')) 152 resolver.GetLink('bar_p3', namespace='foo'))
144 self.assertEqual( 153 self.assertEqual(
145 'Hello <a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>, ' 154 'Hello <a href="bar.bon#property-bar_bon_p3">bar_bon_p3</a>, '
146 '<a href="bar.bon.html#property-bar_bon_p3">Bon Bon</a>, ' 155 '<a href="bar.bon#property-bar_bon_p3">Bon Bon</a>, '
147 '<a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>', 156 '<a href="bar.bon#property-bar_bon_p3">bar_bon_p3</a>',
148 resolver.ResolveAllLinks( 157 resolver.ResolveAllLinks(
149 'Hello $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3', 158 'Hello $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3',
150 namespace='bar.bon')) 159 namespace='bar.bon'))
151 self.assertEqual( 160 self.assertEqual(
152 'I like <a href="bar.html#property-bar_t1-bar_t1_p1">food</a>.', 161 'I like <a href="bar#property-bar_t1-bar_t1_p1">food</a>.',
153 resolver.ResolveAllLinks('I like $ref:[bar.bar_p3.bar_t1_p1 food].', 162 resolver.ResolveAllLinks('I like $ref:[bar.bar_p3.bar_t1_p1 food].',
154 namespace='foo')) 163 namespace='foo'))
155 self.assertEqual( 164 self.assertEqual(
156 'Ref <a href="foo.html">It\'s foo!</a>', 165 'Ref <a href="foo">It\'s foo!</a>',
157 resolver.ResolveAllLinks('Ref $ref:[foo It\'s foo!]', namespace='bar')) 166 resolver.ResolveAllLinks('Ref $ref:[foo It\'s foo!]', namespace='bar'))
158 self.assertEqual( 167 self.assertEqual(
159 'Ref <a href="bar.html#type-bon">Bon</a>', 168 'Ref <a href="bar#type-bon">Bon</a>',
160 resolver.ResolveAllLinks('Ref $ref:[bar.bon Bon]', namespace='bar')) 169 resolver.ResolveAllLinks('Ref $ref:[bar.bon Bon]', namespace='bar'))
161 170
162 # Different kinds of whitespace can be significant inside <pre> tags. 171 # Different kinds of whitespace can be significant inside <pre> tags.
163 self.assertEqual( 172 self.assertEqual(
164 '<pre><a href="bar.html#type-bon">bar.bon</a>({\nkey: value})', 173 '<pre><a href="bar#type-bon">bar.bon</a>({\nkey: value})',
165 resolver.ResolveAllLinks('<pre>$ref:[bar.bon]({\nkey: value})', 174 resolver.ResolveAllLinks('<pre>$ref:[bar.bon]({\nkey: value})',
166 namespace='baz')) 175 namespace='baz'))
167 176
168 # Allow bare "$ref:foo.bar." at the end of a string. 177 # Allow bare "$ref:foo.bar." at the end of a string.
169 self.assertEqual( 178 self.assertEqual(
170 '<a href="bar.html#type-bon">bar.bon</a>.', 179 '<a href="bar#type-bon">bar.bon</a>.',
171 resolver.ResolveAllLinks('$ref:bar.bon.', 180 resolver.ResolveAllLinks('$ref:bar.bon.',
172 namespace='baz')) 181 namespace='baz'))
173 182
174 # If a request is provided it should construct an appropriate relative link. 183 # If a request is provided it should construct an appropriate relative link.
175 self.assertEqual( 184 self.assertEqual(
176 'Hi <a href="../../bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>, ' 185 'Hi <a href="../../bar.bon#property-bar_bon_p3">bar_bon_p3</a>, '
177 '<a href="../../bar.bon.html#property-bar_bon_p3">Bon Bon</a>, ' 186 '<a href="../../bar.bon#property-bar_bon_p3">Bon Bon</a>, '
178 '<a href="../../bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>', 187 '<a href="../../bar.bon#property-bar_bon_p3">bar_bon_p3</a>',
179 resolver.ResolveAllLinks( 188 resolver.ResolveAllLinks(
180 'Hi $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3', 189 'Hi $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3',
181 relative_to='big/long/path/bar.html', 190 relative_to='big/long/path/bar.html',
182 namespace='bar.bon')) 191 namespace='bar.bon'))
183 self.assertEqual( 192 self.assertEqual(
184 'Hi <a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>, ' 193 'Hi <a href="bar.bon#property-bar_bon_p3">bar_bon_p3</a>, '
185 '<a href="bar.bon.html#property-bar_bon_p3">Bon Bon</a>, ' 194 '<a href="bar.bon#property-bar_bon_p3">Bon Bon</a>, '
186 '<a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>', 195 '<a href="bar.bon#property-bar_bon_p3">bar_bon_p3</a>',
187 resolver.ResolveAllLinks( 196 resolver.ResolveAllLinks(
188 'Hi $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3', 197 'Hi $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3',
189 relative_to='', 198 relative_to='',
190 namespace='bar.bon')) 199 namespace='bar.bon'))
191 self.assertEqual( 200 self.assertEqual(
192 'Hi <a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>, ' 201 'Hi <a href="bar.bon#property-bar_bon_p3">bar_bon_p3</a>, '
193 '<a href="bar.bon.html#property-bar_bon_p3">Bon Bon</a>, ' 202 '<a href="bar.bon#property-bar_bon_p3">Bon Bon</a>, '
194 '<a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>', 203 '<a href="bar.bon#property-bar_bon_p3">bar_bon_p3</a>',
195 resolver.ResolveAllLinks( 204 resolver.ResolveAllLinks(
196 'Hi $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3', 205 'Hi $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3',
197 relative_to='bar.html', 206 relative_to='bar.html',
198 namespace='bar.bon')) 207 namespace='bar.bon'))
199 self.assertEqual( 208 self.assertEqual(
200 'Hi <a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>, ' 209 'Hi <a href="bar.bon#property-bar_bon_p3">bar_bon_p3</a>, '
201 '<a href="bar.bon.html#property-bar_bon_p3">Bon Bon</a>, ' 210 '<a href="bar.bon#property-bar_bon_p3">Bon Bon</a>, '
202 '<a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>', 211 '<a href="bar.bon#property-bar_bon_p3">bar_bon_p3</a>',
203 resolver.ResolveAllLinks( 212 resolver.ResolveAllLinks(
204 'Hi $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3', 213 'Hi $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3',
205 relative_to='foo/bar.html', 214 relative_to='foo/bar.html',
206 namespace='bar.bon')) 215 namespace='bar.bon'))
207 self.assertEqual( 216 self.assertEqual(
208 'Hi <a href="../bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>, ' 217 'Hi <a href="../bar.bon#property-bar_bon_p3">bar_bon_p3</a>, '
209 '<a href="../bar.bon.html#property-bar_bon_p3">Bon Bon</a>, ' 218 '<a href="../bar.bon#property-bar_bon_p3">Bon Bon</a>, '
210 '<a href="../bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>', 219 '<a href="../bar.bon#property-bar_bon_p3">bar_bon_p3</a>',
211 resolver.ResolveAllLinks( 220 resolver.ResolveAllLinks(
212 'Hi $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3', 221 'Hi $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3',
213 relative_to='foo/baz/bar.html', 222 relative_to='foo/baz/bar.html',
214 namespace='bar.bon')) 223 namespace='bar.bon'))
215 224
216 if __name__ == '__main__': 225 if __name__ == '__main__':
217 unittest.main() 226 unittest.main()
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/reference_resolver.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698