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

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

Issue 13470005: Refactor the devserver to make it easier to control caching (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cduvall, rebase Created 7 years, 8 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 | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 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 os 7 import os
8 import sys 8 import sys
9 import unittest 9 import unittest
10 10
11 from api_data_source import APIDataSource 11 from api_data_source import APIDataSource
12 from compiled_file_system import CompiledFileSystem 12 from compiled_file_system import CompiledFileSystem
13 from in_memory_object_store import InMemoryObjectStore
14 from local_file_system import LocalFileSystem 13 from local_file_system import LocalFileSystem
15 from reference_resolver import ReferenceResolver 14 from reference_resolver import ReferenceResolver
16 from template_data_source import TemplateDataSource 15 from template_data_source import TemplateDataSource
17 from third_party.handlebar import Handlebar 16 from third_party.handlebar import Handlebar
18 17
19 class _FakeRequest(object): 18 class _FakeRequest(object):
20 pass 19 pass
21 20
22 class _FakeFactory(object): 21 class _FakeFactory(object):
23 def __init__(self, input_dict=None): 22 def __init__(self, input_dict=None):
24 if input_dict is None: 23 if input_dict is None:
25 self._input_dict = {} 24 self._input_dict = {}
26 else: 25 else:
27 self._input_dict = input_dict 26 self._input_dict = input_dict
28 27
29 def Create(self, *args, **optargs): 28 def Create(self, *args, **optargs):
30 return self._input_dict 29 return self._input_dict
31 30
32 class TemplateDataSourceTest(unittest.TestCase): 31 class TemplateDataSourceTest(unittest.TestCase):
33 def setUp(self): 32 def setUp(self):
34 self._base_path = os.path.join(sys.path[0], 33 self._base_path = os.path.join(sys.path[0],
35 'test_data', 34 'test_data',
36 'template_data_source') 35 'template_data_source')
37 self._fake_api_list_data_source_factory = _FakeFactory() 36 self._fake_api_list_data_source_factory = _FakeFactory()
38 self._fake_intro_data_source_factory = _FakeFactory() 37 self._fake_intro_data_source_factory = _FakeFactory()
39 self._fake_samples_data_source_factory = _FakeFactory() 38 self._fake_samples_data_source_factory = _FakeFactory()
40 self._fake_sidenav_data_source_factory = _FakeFactory() 39 self._fake_sidenav_data_source_factory = _FakeFactory()
41 self._fake_known_issues_data_source = {}
42 self._object_store = InMemoryObjectStore('fake_branch')
43 40
44 def _ReadLocalFile(self, filename): 41 def _ReadLocalFile(self, filename):
45 with open(os.path.join(self._base_path, filename), 'r') as f: 42 with open(os.path.join(self._base_path, filename), 'r') as f:
46 return f.read() 43 return f.read()
47 44
48 def _RenderTest(self, name, data_source): 45 def _RenderTest(self, name, data_source):
49 template_name = name + '_tmpl.html' 46 template_name = name + '_tmpl.html'
50 template = Handlebar(self._ReadLocalFile(template_name)) 47 template = Handlebar(self._ReadLocalFile(template_name))
51 self.assertEquals( 48 self.assertEquals(
52 self._ReadLocalFile(name + '_expected.html'), 49 self._ReadLocalFile(name + '_expected.html'),
53 data_source.Render(template_name)) 50 data_source.Render(template_name))
54 51
55 def _CreateTemplateDataSource(self, cache_factory, api_data=None): 52 def _CreateTemplateDataSource(self, compiled_fs_factory, api_data=None):
56 if api_data is None: 53 if api_data is None:
57 api_data_factory = APIDataSource.Factory(cache_factory, 'fake_path') 54 api_data_factory = APIDataSource.Factory(compiled_fs_factory, 'fake_path')
58 else: 55 else:
59 api_data_factory = _FakeFactory(api_data) 56 api_data_factory = _FakeFactory(api_data)
60 reference_resolver_factory = ReferenceResolver.Factory( 57 reference_resolver_factory = ReferenceResolver.Factory(
61 api_data_factory, 58 api_data_factory,
62 self._fake_api_list_data_source_factory, 59 self._fake_api_list_data_source_factory)
63 self._object_store)
64 return (TemplateDataSource.Factory('fake_channel', 60 return (TemplateDataSource.Factory('fake_channel',
65 api_data_factory, 61 api_data_factory,
66 self._fake_api_list_data_source_factory, 62 self._fake_api_list_data_source_factory,
67 self._fake_intro_data_source_factory, 63 self._fake_intro_data_source_factory,
68 self._fake_samples_data_source_factory, 64 self._fake_samples_data_source_factory,
69 self._fake_known_issues_data_source,
70 self._fake_sidenav_data_source_factory, 65 self._fake_sidenav_data_source_factory,
71 cache_factory, 66 compiled_fs_factory,
72 reference_resolver_factory, 67 reference_resolver_factory,
73 '.', 68 '.',
74 '.') 69 '.')
75 .Create(_FakeRequest(), 'extensions/foo')) 70 .Create(_FakeRequest(), 'extensions/foo'))
76 71
77 def testSimple(self): 72 def testSimple(self):
78 self._base_path = os.path.join(self._base_path, 'simple') 73 self._base_path = os.path.join(self._base_path, 'simple')
79 fetcher = LocalFileSystem(self._base_path) 74 fetcher = LocalFileSystem(self._base_path)
80 cache_factory = CompiledFileSystem.Factory(fetcher, self._object_store) 75 compiled_fs_factory = CompiledFileSystem.Factory(fetcher)
81 t_data_source = self._CreateTemplateDataSource(cache_factory) 76 t_data_source = self._CreateTemplateDataSource(compiled_fs_factory)
82 template_a1 = Handlebar(self._ReadLocalFile('test1.html')) 77 template_a1 = Handlebar(self._ReadLocalFile('test1.html'))
83 self.assertEqual(template_a1.render({}, {'templates': {}}).text, 78 self.assertEqual(template_a1.render({}, {'templates': {}}).text,
84 t_data_source.get('test1').render({}, {'templates': {}}).text) 79 t_data_source.get('test1').render({}, {'templates': {}}).text)
85 80
86 template_a2 = Handlebar(self._ReadLocalFile('test2.html')) 81 template_a2 = Handlebar(self._ReadLocalFile('test2.html'))
87 self.assertEqual(template_a2.render({}, {'templates': {}}).text, 82 self.assertEqual(template_a2.render({}, {'templates': {}}).text,
88 t_data_source.get('test2').render({}, {'templates': {}}).text) 83 t_data_source.get('test2').render({}, {'templates': {}}).text)
89 84
90 self.assertEqual(None, t_data_source.get('junk.html')) 85 self.assertEqual(None, t_data_source.get('junk.html'))
91 86
92 def testPartials(self): 87 def testPartials(self):
93 self._base_path = os.path.join(self._base_path, 'partials') 88 self._base_path = os.path.join(self._base_path, 'partials')
94 fetcher = LocalFileSystem(self._base_path) 89 fetcher = LocalFileSystem(self._base_path)
95 cache_factory = CompiledFileSystem.Factory(fetcher, self._object_store) 90 compiled_fs_factory = CompiledFileSystem.Factory(fetcher)
96 t_data_source = self._CreateTemplateDataSource(cache_factory) 91 t_data_source = self._CreateTemplateDataSource(compiled_fs_factory)
97 self.assertEqual( 92 self.assertEqual(
98 self._ReadLocalFile('test_expected.html'), 93 self._ReadLocalFile('test_expected.html'),
99 t_data_source.get('test_tmpl').render( 94 t_data_source.get('test_tmpl').render(
100 json.loads(self._ReadLocalFile('input.json')), t_data_source).text) 95 json.loads(self._ReadLocalFile('input.json')), t_data_source).text)
101 96
102 def testRender(self): 97 def testRender(self):
103 self._base_path = os.path.join(self._base_path, 'render') 98 self._base_path = os.path.join(self._base_path, 'render')
104 fetcher = LocalFileSystem(self._base_path) 99 fetcher = LocalFileSystem(self._base_path)
105 context = json.loads(self._ReadLocalFile('test1.json')) 100 context = json.loads(self._ReadLocalFile('test1.json'))
106 cache_factory = CompiledFileSystem.Factory(fetcher, self._object_store) 101 compiled_fs_factory = CompiledFileSystem.Factory(fetcher)
107 self._RenderTest( 102 self._RenderTest(
108 'test1', 103 'test1',
109 self._CreateTemplateDataSource( 104 self._CreateTemplateDataSource(
110 cache_factory, 105 compiled_fs_factory,
111 api_data=json.loads(self._ReadLocalFile('test1.json')))) 106 api_data=json.loads(self._ReadLocalFile('test1.json'))))
112 self._RenderTest( 107 self._RenderTest(
113 'test2', 108 'test2',
114 self._CreateTemplateDataSource( 109 self._CreateTemplateDataSource(
115 cache_factory, 110 compiled_fs_factory,
116 api_data=json.loads(self._ReadLocalFile('test2.json')))) 111 api_data=json.loads(self._ReadLocalFile('test2.json'))))
117 112
118 if __name__ == '__main__': 113 if __name__ == '__main__':
119 unittest.main() 114 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698