OLD | NEW |
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 file_system_cache import FileSystemCache | 10 from file_system_cache import FileSystemCache |
11 from local_file_system import LocalFileSystem | 11 from local_file_system import LocalFileSystem |
12 from template_data_source import TemplateDataSource | 12 from template_data_source import TemplateDataSource |
13 from third_party.handlebar import Handlebar | 13 from third_party.handlebar import Handlebar |
14 | 14 |
15 class _FakeRequest(object): | 15 class _FakeRequest(object): |
16 pass | 16 pass |
17 | 17 |
| 18 class _FakeApiDataSourceFactory(object): |
| 19 def __init__(self, input_dict): |
| 20 self._input_dict = input_dict |
| 21 |
| 22 def Create(self, samples): |
| 23 return self._input_dict |
| 24 |
18 class _FakeSamplesDataSource(object): | 25 class _FakeSamplesDataSource(object): |
19 def Create(self, request): | 26 def Create(self, request): |
20 return {} | 27 return {} |
21 | 28 |
22 class TemplateDataSourceTest(unittest.TestCase): | 29 class TemplateDataSourceTest(unittest.TestCase): |
23 def setUp(self): | 30 def setUp(self): |
24 self._base_path = os.path.join('test_data', 'template_data_source') | 31 self._base_path = os.path.join('test_data', 'template_data_source') |
25 self._fake_api_data_source = {} | 32 self._fake_api_data_source_factory = _FakeApiDataSourceFactory({}) |
26 self._fake_api_list_data_source = {} | 33 self._fake_api_list_data_source = {} |
27 self._fake_intro_data_source = {} | 34 self._fake_intro_data_source = {} |
28 self._fake_samples_data_source = _FakeSamplesDataSource() | 35 self._fake_samples_data_source = _FakeSamplesDataSource() |
29 | 36 |
30 def _ReadLocalFile(self, filename): | 37 def _ReadLocalFile(self, filename): |
31 with open(os.path.join(self._base_path, filename), 'r') as f: | 38 with open(os.path.join(self._base_path, filename), 'r') as f: |
32 return f.read() | 39 return f.read() |
33 | 40 |
34 def _RenderTest(self, name, data_source): | 41 def _RenderTest(self, name, data_source): |
35 template_name = name + '_tmpl.html' | 42 template_name = name + '_tmpl.html' |
36 template = Handlebar(self._ReadLocalFile(template_name)) | 43 template = Handlebar(self._ReadLocalFile(template_name)) |
37 self.assertEquals( | 44 self.assertEquals( |
38 self._ReadLocalFile(name + '_expected.html'), | 45 self._ReadLocalFile(name + '_expected.html'), |
39 data_source.Render(template_name)) | 46 data_source.Render(template_name)) |
40 | 47 |
41 def _CreateTemplateDataSource(self, input_dict, cache_builder): | 48 def _CreateTemplateDataSource(self, input_dict, cache_builder): |
42 return (TemplateDataSource.Factory('fake_branch', | 49 return (TemplateDataSource.Factory('fake_branch', |
43 input_dict, | 50 _FakeApiDataSourceFactory(input_dict), |
44 self._fake_api_list_data_source, | 51 self._fake_api_list_data_source, |
45 self._fake_intro_data_source, | 52 self._fake_intro_data_source, |
46 self._fake_samples_data_source, | 53 self._fake_samples_data_source, |
47 cache_builder, | 54 cache_builder, |
48 './', | 55 './', |
49 './') | 56 './') |
50 .Create(_FakeRequest())) | 57 .Create(_FakeRequest())) |
51 | 58 |
52 def testSimple(self): | 59 def testSimple(self): |
53 self._base_path = os.path.join(self._base_path, 'simple') | 60 self._base_path = os.path.join(self._base_path, 'simple') |
54 fetcher = LocalFileSystem(self._base_path) | 61 fetcher = LocalFileSystem(self._base_path) |
55 cache_builder = FileSystemCache.Builder(fetcher) | 62 cache_builder = FileSystemCache.Builder(fetcher) |
56 t_data_source = self._CreateTemplateDataSource(self._fake_api_data_source, | 63 t_data_source = self._CreateTemplateDataSource( |
57 cache_builder) | 64 self._fake_api_data_source_factory, cache_builder) |
58 template_a1 = Handlebar(self._ReadLocalFile('test1.html')) | 65 template_a1 = Handlebar(self._ReadLocalFile('test1.html')) |
59 self.assertEqual(template_a1.render({}, {'templates': {}}).text, | 66 self.assertEqual(template_a1.render({}, {'templates': {}}).text, |
60 t_data_source['test1'].render({}, {'templates': {}}).text) | 67 t_data_source['test1'].render({}, {'templates': {}}).text) |
61 | 68 |
62 template_a2 = Handlebar(self._ReadLocalFile('test2.html')) | 69 template_a2 = Handlebar(self._ReadLocalFile('test2.html')) |
63 self.assertEqual(template_a2.render({}, {'templates': {}}).text, | 70 self.assertEqual(template_a2.render({}, {'templates': {}}).text, |
64 t_data_source['test2'].render({}, {'templates': {}}).text) | 71 t_data_source['test2'].render({}, {'templates': {}}).text) |
65 | 72 |
66 self.assertEqual(None, t_data_source['junk.html']) | 73 self.assertEqual(None, t_data_source['junk.html']) |
67 | 74 |
68 def testPartials(self): | 75 def testPartials(self): |
69 self._base_path = os.path.join(self._base_path, 'partials') | 76 self._base_path = os.path.join(self._base_path, 'partials') |
70 fetcher = LocalFileSystem(self._base_path) | 77 fetcher = LocalFileSystem(self._base_path) |
71 cache_builder = FileSystemCache.Builder(fetcher) | 78 cache_builder = FileSystemCache.Builder(fetcher) |
72 t_data_source = self._CreateTemplateDataSource(self._fake_api_data_source, | 79 t_data_source = self._CreateTemplateDataSource( |
73 cache_builder) | 80 self._fake_api_data_source_factory, cache_builder) |
74 self.assertEqual( | 81 self.assertEqual( |
75 self._ReadLocalFile('test_expected.html'), | 82 self._ReadLocalFile('test_expected.html'), |
76 t_data_source['test_tmpl'].render( | 83 t_data_source['test_tmpl'].render( |
77 json.loads(self._ReadLocalFile('input.json')), t_data_source).text) | 84 json.loads(self._ReadLocalFile('input.json')), t_data_source).text) |
78 | 85 |
79 def testRender(self): | 86 def testRender(self): |
80 self._base_path = os.path.join(self._base_path, 'render') | 87 self._base_path = os.path.join(self._base_path, 'render') |
81 fetcher = LocalFileSystem(self._base_path) | 88 fetcher = LocalFileSystem(self._base_path) |
82 context = json.loads(self._ReadLocalFile('test1.json')) | 89 context = json.loads(self._ReadLocalFile('test1.json')) |
83 cache_builder = FileSystemCache.Builder(fetcher) | 90 cache_builder = FileSystemCache.Builder(fetcher) |
84 self._RenderTest( | 91 self._RenderTest( |
85 'test1', | 92 'test1', |
86 self._CreateTemplateDataSource( | 93 self._CreateTemplateDataSource( |
87 json.loads(self._ReadLocalFile('test1.json')), | 94 json.loads(self._ReadLocalFile('test1.json')), |
88 cache_builder)) | 95 cache_builder)) |
89 self._RenderTest( | 96 self._RenderTest( |
90 'test2', | 97 'test2', |
91 self._CreateTemplateDataSource( | 98 self._CreateTemplateDataSource( |
92 json.loads(self._ReadLocalFile('test2.json')), | 99 json.loads(self._ReadLocalFile('test2.json')), |
93 cache_builder)) | 100 cache_builder)) |
94 | 101 |
95 if __name__ == '__main__': | 102 if __name__ == '__main__': |
96 unittest.main() | 103 unittest.main() |
OLD | NEW |