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

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

Issue 10829348: Extensions Docs Server: Large performance increase (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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 | 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 unittest 8 import unittest
9 9
10 from in_memory_object_store import InMemoryObjectStore
10 from file_system_cache import FileSystemCache 11 from file_system_cache import FileSystemCache
11 from local_file_system import LocalFileSystem 12 from local_file_system import LocalFileSystem
12 from template_data_source import TemplateDataSource 13 from template_data_source import TemplateDataSource
13 from third_party.handlebar import Handlebar 14 from third_party.handlebar import Handlebar
14 15
15 class _FakeRequest(object): 16 class _FakeRequest(object):
16 pass 17 pass
17 18
18 class _FakeApiDataSourceFactory(object): 19 class _FakeFactory(object):
19 def __init__(self, input_dict): 20 def __init__(self, input_dict=None):
20 self._input_dict = input_dict 21 if input_dict is None:
22 self._input_dict = {}
23 else:
24 self._input_dict = input_dict
21 25
22 def Create(self, samples): 26 def Create(self, *args):
23 return self._input_dict 27 return self._input_dict
24 28
25 class _FakeSamplesDataSource(object):
26 def Create(self, request):
27 return {}
28
29 class TemplateDataSourceTest(unittest.TestCase): 29 class TemplateDataSourceTest(unittest.TestCase):
30 def setUp(self): 30 def setUp(self):
31 self._base_path = os.path.join('test_data', 'template_data_source') 31 self._base_path = os.path.join('test_data', 'template_data_source')
32 self._fake_api_data_source_factory = _FakeApiDataSourceFactory({}) 32 self._fake_api_data_source_factory = _FakeFactory()
33 self._fake_api_list_data_source = {} 33 self._fake_api_list_data_source_factory = _FakeFactory()
34 self._fake_intro_data_source = {} 34 self._fake_intro_data_source_factory = _FakeFactory()
35 self._fake_samples_data_source = _FakeSamplesDataSource() 35 self._fake_samples_data_source_factory = _FakeFactory()
36 self._object_store = InMemoryObjectStore('fake_branch')
36 37
37 def _ReadLocalFile(self, filename): 38 def _ReadLocalFile(self, filename):
38 with open(os.path.join(self._base_path, filename), 'r') as f: 39 with open(os.path.join(self._base_path, filename), 'r') as f:
39 return f.read() 40 return f.read()
40 41
41 def _RenderTest(self, name, data_source): 42 def _RenderTest(self, name, data_source):
42 template_name = name + '_tmpl.html' 43 template_name = name + '_tmpl.html'
43 template = Handlebar(self._ReadLocalFile(template_name)) 44 template = Handlebar(self._ReadLocalFile(template_name))
44 self.assertEquals( 45 self.assertEquals(
45 self._ReadLocalFile(name + '_expected.html'), 46 self._ReadLocalFile(name + '_expected.html'),
46 data_source.Render(template_name)) 47 data_source.Render(template_name))
47 48
48 def _CreateTemplateDataSource(self, input_dict, cache_builder): 49 def _CreateTemplateDataSource(self, input_dict, cache_builder):
49 return (TemplateDataSource.Factory('fake_branch', 50 return (TemplateDataSource.Factory('fake_branch',
50 _FakeApiDataSourceFactory(input_dict), 51 _FakeFactory(input_dict),
51 self._fake_api_list_data_source, 52 self._fake_api_list_data_source_factory,
52 self._fake_intro_data_source, 53 self._fake_intro_data_source_factory,
53 self._fake_samples_data_source, 54 self._fake_samples_data_source_factory,
54 cache_builder, 55 cache_builder,
55 '.', 56 '.',
56 '.') 57 '.')
57 .Create(_FakeRequest())) 58 .Create(_FakeRequest()))
58 59
59 def testSimple(self): 60 def testSimple(self):
60 self._base_path = os.path.join(self._base_path, 'simple') 61 self._base_path = os.path.join(self._base_path, 'simple')
61 fetcher = LocalFileSystem(self._base_path) 62 fetcher = LocalFileSystem(self._base_path)
62 cache_builder = FileSystemCache.Builder(fetcher) 63 cache_builder = FileSystemCache.Builder(fetcher, self._object_store)
63 t_data_source = self._CreateTemplateDataSource( 64 t_data_source = self._CreateTemplateDataSource(
64 self._fake_api_data_source_factory, cache_builder) 65 self._fake_api_data_source_factory, cache_builder)
65 template_a1 = Handlebar(self._ReadLocalFile('test1.html')) 66 template_a1 = Handlebar(self._ReadLocalFile('test1.html'))
66 self.assertEqual(template_a1.render({}, {'templates': {}}).text, 67 self.assertEqual(template_a1.render({}, {'templates': {}}).text,
67 t_data_source['test1'].render({}, {'templates': {}}).text) 68 t_data_source['test1'].render({}, {'templates': {}}).text)
68 69
69 template_a2 = Handlebar(self._ReadLocalFile('test2.html')) 70 template_a2 = Handlebar(self._ReadLocalFile('test2.html'))
70 self.assertEqual(template_a2.render({}, {'templates': {}}).text, 71 self.assertEqual(template_a2.render({}, {'templates': {}}).text,
71 t_data_source['test2'].render({}, {'templates': {}}).text) 72 t_data_source['test2'].render({}, {'templates': {}}).text)
72 73
73 self.assertEqual(None, t_data_source['junk.html']) 74 self.assertEqual(None, t_data_source['junk.html'])
74 75
75 def testPartials(self): 76 def testPartials(self):
76 self._base_path = os.path.join(self._base_path, 'partials') 77 self._base_path = os.path.join(self._base_path, 'partials')
77 fetcher = LocalFileSystem(self._base_path) 78 fetcher = LocalFileSystem(self._base_path)
78 cache_builder = FileSystemCache.Builder(fetcher) 79 cache_builder = FileSystemCache.Builder(fetcher, self._object_store)
79 t_data_source = self._CreateTemplateDataSource( 80 t_data_source = self._CreateTemplateDataSource(
80 self._fake_api_data_source_factory, cache_builder) 81 self._fake_api_data_source_factory, cache_builder)
81 self.assertEqual( 82 self.assertEqual(
82 self._ReadLocalFile('test_expected.html'), 83 self._ReadLocalFile('test_expected.html'),
83 t_data_source['test_tmpl'].render( 84 t_data_source['test_tmpl'].render(
84 json.loads(self._ReadLocalFile('input.json')), t_data_source).text) 85 json.loads(self._ReadLocalFile('input.json')), t_data_source).text)
85 86
86 def testRender(self): 87 def testRender(self):
87 self._base_path = os.path.join(self._base_path, 'render') 88 self._base_path = os.path.join(self._base_path, 'render')
88 fetcher = LocalFileSystem(self._base_path) 89 fetcher = LocalFileSystem(self._base_path)
89 context = json.loads(self._ReadLocalFile('test1.json')) 90 context = json.loads(self._ReadLocalFile('test1.json'))
90 cache_builder = FileSystemCache.Builder(fetcher) 91 cache_builder = FileSystemCache.Builder(fetcher, self._object_store)
91 self._RenderTest( 92 self._RenderTest(
92 'test1', 93 'test1',
93 self._CreateTemplateDataSource( 94 self._CreateTemplateDataSource(
94 json.loads(self._ReadLocalFile('test1.json')), 95 json.loads(self._ReadLocalFile('test1.json')),
95 cache_builder)) 96 cache_builder))
96 self._RenderTest( 97 self._RenderTest(
97 'test2', 98 'test2',
98 self._CreateTemplateDataSource( 99 self._CreateTemplateDataSource(
99 json.loads(self._ReadLocalFile('test2.json')), 100 json.loads(self._ReadLocalFile('test2.json')),
100 cache_builder)) 101 cache_builder))
101 102
102 if __name__ == '__main__': 103 if __name__ == '__main__':
103 unittest.main() 104 unittest.main()
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/template_data_source.py ('k') | tools/json_schema_compiler/model.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698