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

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

Issue 68873003: Docserver: Serve docs out of src/ not src/chrome/common/extensions. This allows (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix samples Created 7 years, 1 month 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 | Annotate | Revision Log
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 os 6 import os
7 import json 7 import json
8 import unittest 8 import unittest
9 9
10 from api_models import APIModels 10 from api_models import APIModels
11 from compiled_file_system import CompiledFileSystem 11 from compiled_file_system import CompiledFileSystem
12 from extensions_paths import API, EXTENSIONS
12 from features_bundle import FeaturesBundle 13 from features_bundle import FeaturesBundle
13 from file_system import FileNotFoundError 14 from file_system import FileNotFoundError
14 from mock_file_system import MockFileSystem 15 from mock_file_system import MockFileSystem
15 from object_store_creator import ObjectStoreCreator 16 from object_store_creator import ObjectStoreCreator
16 from test_file_system import TestFileSystem 17 from test_file_system import TestFileSystem
17 from test_util import ReadFile 18 from test_util import ReadFile
18 19
19 20
20 _TEST_DATA = { 21 _TEST_DATA = {
21 'api': { 22 'api': {
22 'devtools': { 23 'devtools': {
23 'inspected_window.json': ReadFile(os.path.join( 24 'inspected_window.json': ReadFile(
24 'api', 'devtools', 'inspected_window.json')), 25 API, 'devtools', 'inspected_window.json'),
25 }, 26 },
26 '_api_features.json': json.dumps({ 27 '_api_features.json': json.dumps({
27 'alarms': {}, 28 'alarms': {},
28 'app': {}, 29 'app': {},
29 'app.runtime': {'noparent': True}, 30 'app.runtime': {'noparent': True},
30 'app.runtime.experimental': {}, 31 'app.runtime.experimental': {},
31 'app.runtime.experimental.foo': {}, 32 'app.runtime.experimental.foo': {},
32 'declarativeWebRequest': {}, 33 'declarativeWebRequest': {},
33 'devtools.inspectedWindow': {}, 34 'devtools.inspectedWindow': {},
34 'experimental.accessibility': {}, 35 'experimental.accessibility': {},
35 'storage': {}, 36 'storage': {},
36 }), 37 }),
37 '_manifest_features.json': '{}', 38 '_manifest_features.json': '{}',
38 '_permission_features.json': '{}', 39 '_permission_features.json': '{}',
39 'alarms.idl': ReadFile(os.path.join('api', 'alarms.idl')), 40 'alarms.idl': ReadFile(API, 'alarms.idl'),
40 'declarative_web_request.json': ReadFile(os.path.join( 41 'declarative_web_request.json': ReadFile(
41 'api', 'declarative_web_request.json')), 42 API, 'declarative_web_request.json'),
42 'experimental_accessibility.json': ReadFile(os.path.join( 43 'experimental_accessibility.json': ReadFile(
43 'api', 'experimental_accessibility.json')), 44 API, 'experimental_accessibility.json'),
44 'page_action.json': ReadFile(os.path.join('api', 'page_action.json')), 45 'page_action.json': ReadFile(API, 'page_action.json'),
45 }, 46 },
46 'docs': { 47 'docs': {
47 'templates': { 48 'templates': {
48 'json': { 49 'json': {
49 'manifest.json': '{}', 50 'manifest.json': '{}',
50 'permissions.json': '{}', 51 'permissions.json': '{}',
51 } 52 }
52 } 53 }
53 }, 54 },
54 } 55 }
55 56
56 57
57 class APIModelsTest(unittest.TestCase): 58 class APIModelsTest(unittest.TestCase):
58 def setUp(self): 59 def setUp(self):
59 object_store_creator = ObjectStoreCreator.ForTest() 60 object_store_creator = ObjectStoreCreator.ForTest()
60 compiled_fs_factory = CompiledFileSystem.Factory(object_store_creator) 61 compiled_fs_factory = CompiledFileSystem.Factory(object_store_creator)
61 self._mock_file_system = MockFileSystem(TestFileSystem(_TEST_DATA)) 62 self._mock_file_system = MockFileSystem(
63 TestFileSystem(_TEST_DATA, relative_to=EXTENSIONS))
62 features_bundle = FeaturesBundle( 64 features_bundle = FeaturesBundle(
63 self._mock_file_system, compiled_fs_factory, object_store_creator) 65 self._mock_file_system, compiled_fs_factory, object_store_creator)
64 self._api_models = APIModels( 66 self._api_models = APIModels(
65 features_bundle, compiled_fs_factory, self._mock_file_system) 67 features_bundle, compiled_fs_factory, self._mock_file_system)
66 68
67 def testGetNames(self): 69 def testGetNames(self):
68 # Both 'app' and 'app.runtime' appear here because 'app.runtime' has 70 # Both 'app' and 'app.runtime' appear here because 'app.runtime' has
69 # noparent:true, but 'app.runtime.experimental' etc doesn't so it's a 71 # noparent:true, but 'app.runtime.experimental' etc doesn't so it's a
70 # sub-feature of 'app.runtime' not a separate API. 72 # sub-feature of 'app.runtime' not a separate API.
71 # 'devtools.inspectedWindow' is an API because there is no 'devtools'. 73 # 'devtools.inspectedWindow' is an API because there is no 'devtools'.
72 self.assertEqual( 74 self.assertEqual(
73 ['alarms', 'app', 'app.runtime', 'declarativeWebRequest', 75 ['alarms', 'app', 'app.runtime', 'declarativeWebRequest',
74 'devtools.inspectedWindow', 'experimental.accessibility', 'storage'], 76 'devtools.inspectedWindow', 'experimental.accessibility', 'storage'],
75 sorted(self._api_models.GetNames())) 77 sorted(self._api_models.GetNames()))
76 78
77 def testGetModel(self): 79 def testGetModel(self):
78 def get_model_name(api_name): 80 def get_model_name(api_name):
79 return self._api_models.GetModel(api_name).Get().name 81 return self._api_models.GetModel(api_name).Get().name
80 self.assertEqual('devtools.inspectedWindow', 82 self.assertEqual('devtools.inspectedWindow',
81 get_model_name('devtools.inspectedWindow')) 83 get_model_name('devtools.inspectedWindow'))
82 self.assertEqual('devtools.inspectedWindow', 84 self.assertEqual('devtools.inspectedWindow',
83 get_model_name('devtools/inspected_window.json')) 85 get_model_name('devtools/inspected_window.json'))
84 self.assertEqual('devtools.inspectedWindow', 86 self.assertEqual('devtools.inspectedWindow',
85 get_model_name('api/devtools/inspected_window.json')) 87 get_model_name('%s/devtools/inspected_window.json' % API))
86 self.assertEqual('alarms', get_model_name('alarms')) 88 self.assertEqual('alarms', get_model_name('alarms'))
87 self.assertEqual('alarms', get_model_name('alarms.idl')) 89 self.assertEqual('alarms', get_model_name('alarms.idl'))
88 self.assertEqual('alarms', get_model_name('api/alarms.idl')) 90 self.assertEqual('alarms', get_model_name('%s/alarms.idl' % API))
89 self.assertEqual('declarativeWebRequest', 91 self.assertEqual('declarativeWebRequest',
90 get_model_name('declarativeWebRequest')) 92 get_model_name('declarativeWebRequest'))
91 self.assertEqual('declarativeWebRequest', 93 self.assertEqual('declarativeWebRequest',
92 get_model_name('declarative_web_request.json')) 94 get_model_name('declarative_web_request.json'))
93 self.assertEqual('declarativeWebRequest', 95 self.assertEqual('declarativeWebRequest',
94 get_model_name('api/declarative_web_request.json')) 96 get_model_name('%s/declarative_web_request.json' % API))
95 self.assertEqual('experimental.accessibility', 97 self.assertEqual('experimental.accessibility',
96 get_model_name('experimental.accessibility')) 98 get_model_name('experimental.accessibility'))
97 self.assertEqual('experimental.accessibility', 99 self.assertEqual('experimental.accessibility',
98 get_model_name('experimental_accessibility.json')) 100 get_model_name('experimental_accessibility.json'))
99 self.assertEqual('experimental.accessibility', 101 self.assertEqual('experimental.accessibility',
100 get_model_name('api/experimental_accessibility.json')) 102 get_model_name('%s/experimental_accessibility.json' % API))
101 self.assertEqual('pageAction', get_model_name('pageAction')) 103 self.assertEqual('pageAction', get_model_name('pageAction'))
102 self.assertEqual('pageAction', get_model_name('page_action.json')) 104 self.assertEqual('pageAction', get_model_name('page_action.json'))
103 self.assertEqual('pageAction', get_model_name('api/page_action.json')) 105 self.assertEqual('pageAction', get_model_name('%s/page_action.json' % API))
104 106
105 def testGetNonexistentModel(self): 107 def testGetNonexistentModel(self):
106 self.assertRaises(FileNotFoundError, 108 self.assertRaises(FileNotFoundError,
107 self._api_models.GetModel('notfound').Get) 109 self._api_models.GetModel('notfound').Get)
108 self.assertRaises(FileNotFoundError, 110 self.assertRaises(FileNotFoundError,
109 self._api_models.GetModel('notfound.json').Get) 111 self._api_models.GetModel('notfound.json').Get)
110 self.assertRaises(FileNotFoundError, 112 self.assertRaises(FileNotFoundError,
111 self._api_models.GetModel('api/notfound.json').Get) 113 self._api_models.GetModel('%s/notfound.json' % API).Get)
112 self.assertRaises(FileNotFoundError, 114 self.assertRaises(FileNotFoundError,
113 self._api_models.GetModel('api/alarms.json').Get) 115 self._api_models.GetModel('%s/alarms.json' % API).Get)
114 self.assertRaises(FileNotFoundError, 116 self.assertRaises(FileNotFoundError,
115 self._api_models.GetModel('storage').Get) 117 self._api_models.GetModel('storage').Get)
116 self.assertRaises(FileNotFoundError, 118 self.assertRaises(FileNotFoundError,
117 self._api_models.GetModel('api/storage.json').Get) 119 self._api_models.GetModel('%s/storage.json' % API).Get)
118 self.assertRaises(FileNotFoundError, 120 self.assertRaises(FileNotFoundError,
119 self._api_models.GetModel('api/storage.idl').Get) 121 self._api_models.GetModel('%s/storage.idl' % API).Get)
120 122
121 def testSingleFile(self): 123 def testSingleFile(self):
122 # 2 stats (1 for JSON and 1 for IDL), 1 read (for IDL file which existed). 124 # 2 stats (1 for JSON and 1 for IDL), 1 read (for IDL file which existed).
123 future = self._api_models.GetModel('alarms') 125 future = self._api_models.GetModel('alarms')
124 self.assertTrue(*self._mock_file_system.CheckAndReset( 126 self.assertTrue(*self._mock_file_system.CheckAndReset(
125 read_count=1, stat_count=2)) 127 read_count=1, stat_count=2))
126 128
127 # 1 read-resolve (for the IDL file). 129 # 1 read-resolve (for the IDL file).
128 # 130 #
129 # The important part here and above is that it's only doing a single read; 131 # The important part here and above is that it's only doing a single read;
130 # any more would break the contract that only a single file is accessed - 132 # any more would break the contract that only a single file is accessed -
131 # see the SingleFile annotation in api_models._CreateAPIModel. 133 # see the SingleFile annotation in api_models._CreateAPIModel.
132 future.Get() 134 future.Get()
133 self.assertTrue(*self._mock_file_system.CheckAndReset( 135 self.assertTrue(*self._mock_file_system.CheckAndReset(
134 read_resolve_count=1)) 136 read_resolve_count=1))
135 137
136 # 2 stats (1 for JSON and 1 for IDL), no reads (still cached). 138 # 2 stats (1 for JSON and 1 for IDL), no reads (still cached).
137 future = self._api_models.GetModel('alarms') 139 future = self._api_models.GetModel('alarms')
138 self.assertTrue(*self._mock_file_system.CheckAndReset(stat_count=2)) 140 self.assertTrue(*self._mock_file_system.CheckAndReset(stat_count=2))
139 future.Get() 141 future.Get()
140 self.assertTrue(*self._mock_file_system.CheckAndReset()) 142 self.assertTrue(*self._mock_file_system.CheckAndReset())
141 143
142 144
143 if __name__ == '__main__': 145 if __name__ == '__main__':
144 unittest.main() 146 unittest.main()
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/api_models.py ('k') | chrome/common/extensions/docs/server2/app.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698