OLD | NEW |
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 import json |
7 import unittest | 7 import unittest |
8 import copy | 8 import copy |
9 | 9 |
10 from extensions_paths import JSON_TEMPLATES | 10 from extensions_paths import JSON_TEMPLATES |
(...skipping 26 matching lines...) Expand all Loading... |
37 }] | 37 }] |
38 | 38 |
39 _AddLevels(sidenav_json, 1) | 39 _AddLevels(sidenav_json, 1) |
40 self.assertEqual(expected, sidenav_json) | 40 self.assertEqual(expected, sidenav_json) |
41 | 41 |
42 def testAddAnnotations(self): | 42 def testAddAnnotations(self): |
43 item1 = { 'href': '/H1.html' } | 43 item1 = { 'href': '/H1.html' } |
44 item2_1 = { 'href': '/H2_1.html' } | 44 item2_1 = { 'href': '/H2_1.html' } |
45 item2_2 = { 'href': '/H2_2.html' } | 45 item2_2 = { 'href': '/H2_2.html' } |
46 item2 = { 'href': '/H2.html', 'items': [item2_1, item2_2] } | 46 item2 = { 'href': '/H2.html', 'items': [item2_1, item2_2] } |
47 | 47 |
48 expected = [ item1, item2 ] | 48 expected = [ item1, item2 ] |
49 | 49 |
50 sidenav_json = copy.deepcopy(expected) | 50 sidenav_json = copy.deepcopy(expected) |
51 | 51 |
52 item2['child_selected'] = True | 52 item2['child_selected'] = True |
53 item2_1['selected'] = True | 53 item2_1['selected'] = True |
54 item2_1['related'] = True | 54 item2_1['related'] = True |
55 item2_1['parent'] = { 'title': item2.get('title', None), | 55 item2_1['parent'] = { 'title': item2.get('title', None), |
56 'href': item2.get('href', None) } | 56 'href': item2.get('href', None) } |
57 | 57 |
58 item2_2['related'] = True | 58 item2_2['related'] = True |
59 | 59 |
60 self.assertTrue(_AddAnnotations(sidenav_json, item2_1['href'])) | 60 self.assertTrue(_AddAnnotations(sidenav_json, item2_1['href'])) |
61 self.assertEqual(expected, sidenav_json) | 61 self.assertEqual(expected, sidenav_json) |
62 | 62 |
63 def testWithDifferentBasePath(self): | 63 def testWithDifferentBasePath(self): |
64 file_system = TestFileSystem({ | 64 file_system = TestFileSystem({ |
65 'chrome_sidenav.json': json.dumps([ | 65 'chrome_sidenav.json': json.dumps([ |
66 { 'href': '/H1.html' }, | 66 { 'href': '/H1.html' }, |
67 { 'href': '/H2.html' }, | 67 { 'href': '/H2.html' }, |
68 { 'href': '/base/path/H2.html' }, | 68 { 'href': '/base/path/H2.html' }, |
69 { 'href': 'https://qualified/X1.html' }, | 69 { 'href': 'https://qualified/X1.html' }, |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 | 132 |
133 self.assertEqual(1, len(log_output)) | 133 self.assertEqual(1, len(log_output)) |
134 self.assertTrue( | 134 self.assertTrue( |
135 log_output[0].msg.startswith('Paths in sidenav must be qualified.')) | 135 log_output[0].msg.startswith('Paths in sidenav must be qualified.')) |
136 | 136 |
137 # Test that only a single file is read when creating the sidenav, so that | 137 # Test that only a single file is read when creating the sidenav, so that |
138 # we can be confident in the compiled_file_system.SingleFile annotation. | 138 # we can be confident in the compiled_file_system.SingleFile annotation. |
139 self.assertTrue(*file_system.CheckAndReset( | 139 self.assertTrue(*file_system.CheckAndReset( |
140 read_count=1, stat_count=1, read_resolve_count=1)) | 140 read_count=1, stat_count=1, read_resolve_count=1)) |
141 | 141 |
142 def testCron(self): | 142 def testRefresh(self): |
143 file_system = TestFileSystem({ | 143 file_system = TestFileSystem({ |
144 'chrome_sidenav.json': '[{ "title": "H1" }]' | 144 'chrome_sidenav.json': '[{ "title": "H1" }]' |
145 }, relative_to=JSON_TEMPLATES) | 145 }, relative_to=JSON_TEMPLATES) |
146 | 146 |
147 # Ensure Cron doesn't rely on request. | 147 # Ensure Refresh doesn't rely on request. |
148 sidenav_data_source = SidenavDataSource( | 148 sidenav_data_source = SidenavDataSource( |
149 ServerInstance.ForTest(file_system), request=None) | 149 ServerInstance.ForTest(file_system), request=None) |
150 sidenav_data_source.Cron().Get() | 150 sidenav_data_source.Refresh().Get() |
151 | 151 |
152 # If Cron fails, chrome_sidenav.json will not be cached, and the cache_data | 152 # If Refresh fails, chrome_sidenav.json will not be cached, and the |
153 # access will fail. | 153 # cache_data access will fail. |
154 # TODO(jshumway): Make a non hack version of this check. | 154 # TODO(jshumway): Make a non hack version of this check. |
155 sidenav_data_source._cache._file_object_store.Get( | 155 sidenav_data_source._cache._file_object_store.Get( |
156 '%schrome_sidenav.json' % JSON_TEMPLATES).Get().cache_data | 156 '%schrome_sidenav.json' % JSON_TEMPLATES).Get().cache_data |
157 | 157 |
158 | 158 |
159 if __name__ == '__main__': | 159 if __name__ == '__main__': |
160 unittest.main() | 160 unittest.main() |
OLD | NEW |