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

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

Issue 16410002: Docserver manifest follow up (rewrite) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gen-manifest-try-2
Patch Set: replace dictionaries with Feature class Created 7 years, 4 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
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 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 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 from copy import deepcopy 6 from copy import deepcopy
7 import unittest 7 import unittest
8 8
9 from features_model import Feature
9 import manifest_data_source 10 import manifest_data_source
10 11
11 convert_and_annotate_docs = { 12 convert_and_annotate_docs = {
12 'name': { 13 'name': Feature({
13 'example': "My {{title}}", 14 'example': "My {{title}}",
14 'name': 'name', 15 'name': 'name',
15 'level': 'required' 16 'level': 'required'
16 }, 17 }),
17 'doc2': { 18 'doc2': Feature({
18 'level': 'required', 19 'level': 'required',
19 'name': 'doc2' 20 'name': 'doc2'
20 }, 21 }),
21 'doc1': { 22 'doc1': Feature({
22 'level': 'required', 23 'level': 'required',
23 'name': 'doc1', 24 'name': 'doc1',
24 'children': { 25 'children': {
25 'sub1': { 26 'sub1': Feature({
26 'annotations': ['not so important'], 27 'annotations': ['not so important'],
27 'level': 'optional', 28 'level': 'optional',
28 'name': 'sub1' 29 'name': 'sub1'
29 }, 30 }),
30 'sub2': { 31 'sub2': Feature({
31 'level': 'required', 32 'level': 'required',
32 'name': 'sub2' 33 'name': 'sub2'
33 } 34 })
34 } 35 }
35 }, 36 }),
36 'doc3': { 37 'doc3': Feature({
37 'level': 'only_one', 38 'level': 'only_one',
38 'name': 'doc3' 39 'name': 'doc3'
39 }, 40 }),
40 'doc4': { 41 'doc4': Feature({
41 'level': 'recommended', 42 'level': 'recommended',
42 'name': 'doc4' 43 'name': 'doc4'
43 }, 44 }),
44 'doc5': { 45 'doc5': Feature({
45 'level': 'only_one', 46 'level': 'only_one',
46 'name': 'doc5' 47 'name': 'doc5'
47 }, 48 }),
48 'doc6': { 49 'doc6': Feature({
49 'level': 'optional', 50 'level': 'optional',
50 'name': 'doc6' 51 'name': 'doc6'
51 } 52 })
52 } 53 }
53 54
54 class ManifestDataSourceTest(unittest.TestCase): 55 class ManifestDataSourceTest(unittest.TestCase):
55 def testConvertAndSortDocs(self): 56 def testConvertAndSortDocs(self):
56 expected_docs = [ 57 expected_docs = [
57 { 58 Feature({
58 'level': 'required', 59 'level': 'required',
59 'name': 'doc1', 60 'name': 'doc1',
60 'children': [ 61 'children': [
61 { 62 Feature({
62 'level': 'required', 63 'level': 'required',
63 'name': 'sub2' 64 'name': 'sub2'
64 }, 65 }),
65 { 66 Feature({
66 'annotations': ['not so important'], 67 'annotations': ['not so important'],
67 'level': 'optional', 68 'level': 'optional',
68 'name': 'sub1' 69 'name': 'sub1'
69 } 70 })
70 ] 71 ]
71 }, 72 }),
72 { 73 Feature({
73 'level': 'required', 74 'level': 'required',
74 'name': 'doc2' 75 'name': 'doc2'
75 }, 76 }),
76 { 77 Feature({
77 'level': 'required', 78 'level': 'required',
78 'example': '"My App"', 79 'example': '"My App"',
79 'has_example': True, 80 'has_example': True,
80 'name': 'name' 81 'name': 'name'
81 }, 82 }),
82 { 83 Feature({
83 'level': 'recommended', 84 'level': 'recommended',
84 'name': 'doc4' 85 'name': 'doc4'
85 }, 86 }),
86 { 87 Feature({
87 'level': 'only_one', 88 'level': 'only_one',
88 'name': 'doc3' 89 'name': 'doc3'
89 }, 90 }),
90 { 91 Feature({
91 'level': 'only_one', 92 'level': 'only_one',
92 'name': 'doc5' 93 'name': 'doc5'
93 }, 94 }),
94 { 95 Feature({
95 'level': 'optional', 96 'level': 'optional',
96 'name': 'doc6' 97 'name': 'doc6'
97 } 98 })
98 ] 99 ]
99 100
100 self.assertEqual(expected_docs, manifest_data_source._ListifyAndSortDocs( 101 self.assertEqual(expected_docs, manifest_data_source._ListifyAndSortDocs(
101 deepcopy(convert_and_annotate_docs), 'app')) 102 deepcopy(convert_and_annotate_docs), 'app'))
102 103
103 def testAnnotate(self): 104 def testAnnotate(self):
104 expected_docs = [ 105 expected_docs = [
105 { 106 Feature({
106 'level': 'required', 107 'level': 'required',
107 'name': 'doc1', 108 'name': 'doc1',
108 'children': [ 109 'children': [
109 { 110 Feature({
110 'level': 'required', 111 'level': 'required',
111 'name': 'sub2' 112 'name': 'sub2'
112 }, 113 }),
113 { 114 Feature({
114 'annotations': ['Optional', 'not so important'], 115 'annotations': ['Optional', 'not so important'],
115 'level': 'optional', 116 'level': 'optional',
116 'name': 'sub1', 117 'name': 'sub1',
117 'is_last': True 118 'is_last': True
118 } 119 })
119 ] 120 ]
120 }, 121 }),
121 { 122 Feature({
122 'level': 'required', 123 'level': 'required',
123 'name': 'doc2' 124 'name': 'doc2'
124 }, 125 }),
125 { 126 Feature({
126 'name': 'name', 127 'name': 'name',
127 'level': 'required', 128 'level': 'required',
128 'example': '"My App"', 129 'example': '"My App"',
129 'has_example': True 130 'has_example': True
130 }, 131 }),
131 { 132 Feature({
132 'annotations': ['Recommended'], 133 'annotations': ['Recommended'],
133 'level': 'recommended', 134 'level': 'recommended',
134 'name': 'doc4' 135 'name': 'doc4'
135 }, 136 }),
136 { 137 Feature({
137 'annotations': ['Pick one (or none)'], 138 'annotations': ['Pick one (or none)'],
138 'level': 'only_one', 139 'level': 'only_one',
139 'name': 'doc3' 140 'name': 'doc3'
140 }, 141 }),
141 { 142 Feature({
142 'level': 'only_one', 143 'level': 'only_one',
143 'name': 'doc5' 144 'name': 'doc5'
144 }, 145 }),
145 { 146 Feature({
146 'annotations': ['Optional'], 147 'annotations': ['Optional'],
147 'level': 'optional', 148 'level': 'optional',
148 'name': 'doc6', 149 'name': 'doc6',
149 'is_last': True 150 'is_last': True
150 } 151 })
151 ] 152 ]
152 153
153 annotated = manifest_data_source._ListifyAndSortDocs( 154 annotated = manifest_data_source._ListifyAndSortDocs(
154 deepcopy(convert_and_annotate_docs), 'App') 155 deepcopy(convert_and_annotate_docs), 'App')
155 manifest_data_source._AddLevelAnnotations(annotated) 156 manifest_data_source._AddLevelAnnotations(annotated)
156 self.assertEqual(expected_docs, annotated) 157 self.assertEqual(expected_docs, annotated)
157 158
158 def testRestructureChildren(self): 159 def testRestructureChildren(self):
159 docs = { 160 docs = {
160 'doc1.sub2': { 161 'doc1.sub2': Feature({
161 'name': 'doc1.sub2' 162 'name': 'doc1.sub2'
162 }, 163 }),
163 'doc1': { 164 'doc1': Feature({
164 'name': 'doc1' 165 'name': 'doc1'
165 }, 166 }),
166 'doc2': { 167 'doc2': Feature({
167 'name': 'doc2' 168 'name': 'doc2'
168 }, 169 }),
169 'doc1.sub1.subsub1': { 170 'doc1.sub1.subsub1': Feature({
170 'name': 'doc1.sub1.subsub1' 171 'name': 'doc1.sub1.subsub1'
171 }, 172 }),
172 'doc1.sub1': { 173 'doc1.sub1': Feature({
173 'name': 'doc1.sub1' 174 'name': 'doc1.sub1'
174 } 175 })
175 } 176 }
176 177
177 expected_docs = { 178 expected_docs = {
178 'doc1': { 179 'doc1': Feature({
179 'name': 'doc1', 180 'name': 'doc1',
180 'children': { 181 'children': {
181 'sub1': { 182 'sub1': Feature({
182 'name': 'sub1', 183 'name': 'sub1',
183 'children': { 184 'children': {
184 'subsub1': { 185 'subsub1': Feature({
185 'name' :'subsub1' 186 'name' :'subsub1'
186 } 187 })
187 } 188 }
188 }, 189 }),
189 'sub2': { 190 'sub2': Feature({
190 'name': 'sub2' 191 'name': 'sub2'
191 } 192 })
192 } 193 }
193 }, 194 }),
194 'doc2': { 195 'doc2': Feature({
195 'name': 'doc2' 196 'name': 'doc2'
196 } 197 })
197 } 198 }
198 199
199 self.assertEqual( 200 self.assertEqual(
200 expected_docs, manifest_data_source._RestructureChildren(docs)) 201 expected_docs, manifest_data_source._RestructureChildren(docs))
201 202
202 if __name__ == '__main__': 203 if __name__ == '__main__':
203 unittest.main() 204 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698