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

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

Issue 532423002: Inlining references to internal APIs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removing extensionTypes from chrome api features (still in extension api features) Created 6 years, 3 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
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2013 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.
5
6 import unittest
7 from copy import deepcopy
8
9 from schema_util import RemoveNoDocs, DetectInlineableTypes, InlineDocs
10
11
12 class SchemaUtilTest(unittest.TestCase):
13
14 def testRemoveNoDocs(self):
15 expected_nodoc = [
16 {
17 'name': 'B',
18 'list': [
19 {
20 'name': 'B2'
21 }
22 ]
23 },
24 {
25 'name': 'D',
26 'nodoc': False
27 },
28 {
29 'name': 'E',
30 'items1': [
31 {
32 'name': 'E1',
33 'items': [
34 {
35 'name': 'E1.3'
36 }
37 ]
38 },
39 {
40 'name': 'E2'
41 }
42 ]
43 }
44 ]
45
46 nodoc_data = [
47 {
48 'name': 'A',
49 'nodoc': True
50 },
51 {
52 'name': 'B',
53 'list': [
54 {
55 'name': 'B1',
56 'nodoc': True
57 },
58 {
59 'name': 'B2'
60 },
61 {
62 'name': 'B3',
63 'nodoc': True
64 }
65 ]
66 },
67 {
68 'name': 'C',
69 'nodoc': True
70 },
71 {
72 'name': 'D',
73 'nodoc': False
74 },
75 {
76 'name': 'E',
77 'dict': {
78 'name': 'Ed',
79 'nodoc': True
80 },
81 'items1': [
82 {
83 'name': 'E1',
84 'items': [
85 {
86 'name': 'E1.1',
87 'nodoc': True
88 },
89 {
90 'name': 'E1.2',
91 'nodoc': True
92 },
93 {
94 'name': 'E1.3'
95 }
96 ]
97 },
98 {
99 'name': 'E2'
100 },
101 {
102 'name': 'E3',
103 'nodoc': True
104 }
105 ]
106 }
107 ]
108
109 RemoveNoDocs(nodoc_data)
110 self.assertEquals(expected_nodoc, nodoc_data)
111
112 def testInlineDocs(self):
113 schema = {
114 'namespace': 'storage',
115 'properties': {
116 'key2': {
117 'description': 'second key',
118 '$ref': 'Key'
119 },
120 'key1': {
121 'description': 'first key',
122 '$ref': 'Key'
123 }
124 },
125 'types': [
126 {
127 'inline_doc': True,
128 'type': 'string',
129 'id': 'Key', # Should be inlined into both properties and be removed
130 # from types.
131 'description': 'This is a key.', # This description should disappear.
132 'marker': True # This should appear three times in the output.
133 },
134 {
135 'items': {
136 '$ref': 'Key'
137 },
138 'type': 'array',
139 'id': 'KeyList',
140 'description': 'A list of keys'
141 }
142 ]
143 }
144
145 expected_schema = {
146 'namespace': 'storage',
147 'properties': {
148 'key2': {
149 'marker': True,
150 'type': 'string',
151 'description': 'second key'
152 },
153 'key1': {
154 'marker': True,
155 'type': 'string',
156 'description': 'first key'
157 }
158 },
159 'types': [
160 {
161 'items': {
162 'marker': True,
163 'type': 'string'
164 },
165 'type': 'array',
166 'id': 'KeyList',
167 'description': 'A list of keys'
168 }
169 ]
170 }
171
172 inlined_schema = deepcopy(schema)
173 InlineDocs(inlined_schema, False)
174 self.assertEqual(expected_schema, inlined_schema)
175
176 def testDetectInline(self):
177 schema = {
178 'types': [
179 {
180 'id': 'Key',
181 'items': {
182 '$ref': 'Value'
183 }
184 },
185 {
186 'id': 'Value',
187 'marker': True
188 }
189 ]
190 }
191
192 expected_schema = {
193 'types': [
194 {
195 'id': 'Key',
196 'items': {
197 'marker': True,
198 }
199 }
200 ]
201 }
202
203 DetectInlineableTypes(schema)
204 InlineDocs(schema, False)
205 self.assertEqual(expected_schema, schema)
206
207
208 if __name__ == '__main__':
209 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698