Add a NavigationThrottle to the public content/ interface
[chromium-blink-merge.git] / chrome / common / extensions / docs / server2 / document_renderer_test.py
blob5394ea3040b21bf21236c9cf9af316969ae88936
1 #!/usr/bin/env python
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
4 # found in the LICENSE file.
6 import unittest
8 from document_renderer import DocumentRenderer
9 from server_instance import ServerInstance
10 from test_file_system import TestFileSystem
11 from test_data.canned_data import CANNED_TEST_FILE_SYSTEM_DATA
14 class DocumentRendererUnittest(unittest.TestCase):
15 def setUp(self):
16 self._renderer = ServerInstance.ForTest(
17 TestFileSystem(CANNED_TEST_FILE_SYSTEM_DATA)).document_renderer
18 self._path = 'apps/some/path/to/document.html'
20 def _Render(self, document, render_title=False):
21 return self._renderer.Render(document,
22 self._path,
23 render_title=render_title)
25 def testNothingToSubstitute(self):
26 document = 'hello world'
28 text, warnings = self._Render(document)
29 self.assertEqual(document, text)
30 self.assertEqual([], warnings)
32 text, warnings = self._Render(document, render_title=True)
33 self.assertEqual(document, text)
34 self.assertEqual(['Expected a title'], warnings)
36 def testTitles(self):
37 document = '<h1>title</h1> then $(title) then another $(title)'
39 text, warnings = self._Render(document)
40 self.assertEqual(document, text)
41 self.assertEqual(['Found unexpected title "title"'], warnings)
43 text, warnings = self._Render(document, render_title=True)
44 self.assertEqual('<h1>title</h1> then title then another $(title)', text)
45 self.assertEqual([], warnings)
47 def testTocs(self):
48 document = ('here is a toc $(table_of_contents) '
49 'and another $(table_of_contents)')
50 expected_document = ('here is a toc <table-of-contents> and another '
51 '$(table_of_contents)')
53 text, warnings = self._Render(document)
54 self.assertEqual(expected_document, text)
55 self.assertEqual([], warnings)
57 text, warnings = self._Render(document, render_title=True)
58 self.assertEqual(expected_document, text)
59 self.assertEqual(['Expected a title'], warnings)
61 def testRefs(self):
62 # The references in this and subsequent tests won't actually be resolved
63 document = 'A ref $(ref:baz.baz_e1) here, $(ref:foo.foo_t3 ref title) there'
64 expected_document = ''.join([
65 'A ref <a href=/apps/#type-baz_e1>baz.baz_e1</a> here, ',
66 '<a href=/apps/#type-foo_t3>ref title</a> there'
69 text, warnings = self._Render(document)
70 self.assertEqual(expected_document, text)
71 self.assertEqual([], warnings)
73 text, warnings = self._Render(document, render_title=True)
74 self.assertEqual(expected_document, text)
75 self.assertEqual(['Expected a title'], warnings)
77 def testTitleAndToc(self):
78 document = '<h1>title</h1> $(title) and $(table_of_contents)'
80 text, warnings = self._Render(document)
81 self.assertEqual('<h1>title</h1> $(title) and <table-of-contents>', text)
82 self.assertEqual(['Found unexpected title "title"'], warnings)
84 text, warnings = self._Render(document, render_title=True)
85 self.assertEqual('<h1>title</h1> title and <table-of-contents>', text)
86 self.assertEqual([], warnings)
88 def testRefInTitle(self):
89 document = '<h1>$(ref:baz.baz_e1 title)</h1> A $(title) was here'
90 href = '/apps/#type-baz_e1'
91 expected_document_no_title = ''.join([
92 '<h1><a href=%s>title</a></h1> A $(title) was here' % href
95 expected_document = ''.join([
96 '<h1><a href=%s>title</a></h1> A title was here' % href
99 text, warnings = self._Render(document)
100 self.assertEqual(expected_document_no_title, text)
101 self.assertEqual([('Found unexpected title "title"')], warnings)
103 text, warnings = self._Render(document, render_title=True)
104 self.assertEqual(expected_document, text)
105 self.assertEqual([], warnings)
107 def testRefSplitAcrossLines(self):
108 document = 'Hello, $(ref:baz.baz_e1 world). A $(ref:foo.foo_t3\n link)'
109 expected_document = ''.join([
110 'Hello, <a href=/apps/#type-baz_e1>world</a>. ',
111 'A <a href=/apps/#type-foo_t3>link</a>'
115 text, warnings = self._Render(document)
116 self.assertEqual(expected_document, text)
117 self.assertEqual([], warnings)
119 text, warnings = self._Render(document, render_title=True)
120 self.assertEqual(expected_document, text)
121 self.assertEqual(['Expected a title'], warnings)
123 def testInvalidRef(self):
124 # DocumentRenderer attempts to detect unclosed $(ref:...) tags by limiting
125 # how far it looks ahead. Lorem Ipsum should be long enough to trigger that.
126 _LOREM_IPSUM = (
127 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do '
128 'eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim '
129 'ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut '
130 'aliquip ex ea commodo consequat. Duis aute irure dolor in '
131 'reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla '
132 'pariatur. Excepteur sint occaecat cupidatat non proident, sunt in '
133 'culpa qui officia deserunt mollit anim id est laborum.')
134 document = ''.join([
135 'An invalid $(ref:foo.foo_t3 a title ',
136 _LOREM_IPSUM,
137 '$(ref:baz.baz_e1) here'
139 expected_document = ''.join([
140 'An invalid $(ref:foo.foo_t3 a title ',
141 _LOREM_IPSUM,
142 '<a href=/apps/#type-baz_e1>baz.baz_e1</a> here'
145 text, warnings = self._Render(document)
146 self.assertEqual(expected_document, text)
147 self.assertEqual([], warnings)
149 text, warnings = self._Render(document, render_title=True)
150 self.assertEqual(expected_document, text)
151 self.assertEqual(['Expected a title'], warnings)
154 if __name__ == '__main__':
155 unittest.main()