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

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: subdoc rename 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 import json 6 from copy import deepcopy
7 import unittest 7 import unittest
8 8
9 from compiled_file_system import CompiledFileSystem 9 import manifest_data_source
10 from manifest_data_source import ManifestDataSource
11 from object_store_creator import ObjectStoreCreator
12 from test_file_system import TestFileSystem
13 10
14 file_system = TestFileSystem({ 11 convert_and_annotate_docs = {
15 "_manifest_features.json": json.dumps({ 12 'name': {
16 'req0': { 13 'example': "My {{title}}",
17 'extension_types': ['platform_app', 'extension'] 14 'name': 'name',
18 }, 15 'level': 'required'
19 'req1': { 16 },
20 'extension_types': 'all' 17 'doc2': {
21 }, 18 'level': 'required',
22 'opt0': { 19 'name': 'doc2'
23 'extension_types': ['extension'] 20 },
24 }, 21 'doc1': {
25 'opt1': { 22 'level': 'required',
26 'extension_types': ['hosted_app'] 23 'name': 'doc1',
27 }, 24 'children': {
28 'free0': { 25 'sub1': {
29 'extension_types': ['platform_app'] 26 'annotations': ['not so important'],
30 }, 27 'level': 'optional',
31 'free1': { 28 'name': 'sub1'
32 'extension_types': ['platform_app', 'hosted_app', 'extension'] 29 },
33 }, 30 'sub2': {
34 'only0': { 31 'level': 'required',
35 'extension_types': 'all' 32 'name': 'sub2'
36 }, 33 }
37 'only1': {
38 'extension_types': ['platform_app']
39 },
40 'rec0': {
41 'extension_types': ['extension']
42 },
43 'rec1': {
44 'extension_types': ['platform_app', 'extension']
45 } 34 }
46 }), 35 },
47 "manifest.json": json.dumps({ 36 'doc3': {
48 'required': [ 37 'level': 'only_one',
49 { 38 'name': 'doc3'
50 'name': 'req0', 39 },
51 'example': 'Extension' 40 'doc4': {
52 }, 41 'level': 'recommended',
53 {'name': 'req1'} 42 'name': 'doc4'
54 ], 43 },
55 'only_one': [ 44 'doc5': {
56 {'name': 'only0'}, 45 'level': 'only_one',
57 {'name': 'only1'} 46 'name': 'doc5'
58 ], 47 },
59 'recommended': [ 48 'doc6': {
60 {'name': 'rec0'}, 49 'level': 'optional',
61 {'name': 'rec1'} 50 'name': 'doc6'
62 ], 51 }
63 'optional': [ 52 }
64 {'name': 'opt0'},
65 {'name': 'opt1'}
66 ]
67 })
68 })
69 53
70 class ManifestDataSourceTest(unittest.TestCase): 54 class ManifestDataSourceTest(unittest.TestCase):
71 def testCreateManifestData(self): 55 def testConvertAndSortDocs(self):
72 expected_extensions = { 56 expected_docs = [
73 'required': [ 57 {
74 { 58 'level': 'required',
75 'name': 'req0', 59 'name': 'doc1',
76 'example': 'Extension' 60 'children': [
77 }, 61 {
78 {'name': 'req1'} 62 'level': 'required',
79 ], 63 'name': 'sub2'
80 'recommended': [ 64 },
81 {'name': 'rec0'}, 65 {
82 {'name': 'rec1'} 66 'annotations': ['not so important'],
83 ], 67 'level': 'optional',
84 'only_one': [ 68 'name': 'sub1'
85 {'name': 'only0'} 69 }
86 ], 70 ]
87 'optional': [ 71 },
88 {'name': 'free1'}, 72 {
89 { 73 'level': 'required',
90 'name': 'opt0', 74 'name': 'doc2'
91 'is_last': True 75 },
92 } 76 {
93 ] 77 'level': 'required',
94 } 78 'example': '"My App"',
79 'has_example': True,
80 'name': 'name'
81 },
82 {
83 'level': 'recommended',
84 'name': 'doc4'
85 },
86 {
87 'level': 'only_one',
88 'name': 'doc3'
89 },
90 {
91 'level': 'only_one',
92 'name': 'doc5'
93 },
94 {
95 'level': 'optional',
96 'name': 'doc6'
97 }
98 ]
95 99
96 expected_apps = { 100 self.assertEqual(expected_docs, manifest_data_source._ConvertAndSortDocs(
97 'required': [ 101 deepcopy(convert_and_annotate_docs), 'app'))
98 {
99 'name': 'req0',
100 'example': 'Application'
101 },
102 {'name': 'req1'}
103 ],
104 'recommended': [
105 {'name': 'rec1'}
106 ],
107 'only_one': [
108 {'name': 'only0'},
109 {'name': 'only1'}
110 ],
111 'optional': [
112 {'name': 'free0'},
113 {
114 'name': 'free1',
115 'is_last': True
116 }
117 ]
118 }
119 102
120 mds = ManifestDataSource( 103 def testAnnotate(self):
121 CompiledFileSystem.Factory(file_system, ObjectStoreCreator.ForTest()), 104 expected_docs = [
122 file_system, 'manifest.json', '_manifest_features.json') 105 {
106 'level': 'required',
107 'name': 'doc1',
108 'children': [
109 {
110 'level': 'required',
111 'name': 'sub2'
112 },
113 {
114 'annotations': ['Optional', 'not so important'],
115 'level': 'optional',
116 'name': 'sub1',
117 'is_last': True
118 }
119 ]
120 },
121 {
122 'level': 'required',
123 'name': 'doc2'
124 },
125 {
126 'name': 'name',
127 'level': 'required',
128 'example': '"My App"',
129 'has_example': True
130 },
131 {
132 'annotations': ['Recommended'],
133 'level': 'recommended',
134 'name': 'doc4'
135 },
136 {
137 'annotations': ['Pick one (or none)'],
138 'level': 'only_one',
139 'name': 'doc3'
140 },
141 {
142 'level': 'only_one',
143 'name': 'doc5'
144 },
145 {
146 'annotations': ['Optional'],
147 'level': 'optional',
148 'name': 'doc6',
149 'is_last': True
150 }
151 ]
123 152
124 self.assertEqual(expected_extensions, mds.get('extensions')) 153 annotated = manifest_data_source._ConvertAndSortDocs(
125 self.assertEqual(expected_apps, mds.get('apps')) 154 deepcopy(convert_and_annotate_docs), 'App')
155 manifest_data_source._Annotate(annotated)
156 self.assertEqual(expected_docs, annotated)
126 157
127 if __name__ == '__main__': 158 if __name__ == '__main__':
128 unittest.main() 159 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698