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.
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
):
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
,
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
)
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
)
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
)
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.
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.')
135 'An invalid $(ref:foo.foo_t3 a title ',
137 '$(ref:baz.baz_e1) here'
139 expected_document
= ''.join([
140 'An invalid $(ref:foo.foo_t3 a title ',
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__':