Mercurial > wikked
annotate tests/test_page.py @ 64:0b4f4c23770a
Removed specific "include"-related properties from the code and DB.
(they can already be accessed via the meta)
Fixed a bug with handling includes in queries.
Better code in some places in the formatter.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 07 Feb 2013 22:34:13 -0800 |
parents | 494f3c4660ed |
children | 9afe4a1dbd1e |
rev | line source |
---|---|
54 | 1 from tests import WikkedTest, format_link, format_include |
51 | 2 from mock import MockFileSystem |
3 from wikked.page import Page | |
4 | |
5 | |
6 class PageTest(WikkedTest): | |
53 | 7 def _getWikiFromStructure(self, structure): |
8 wiki = self.getWiki(use_db=False, fs_factory=lambda cfg: MockFileSystem(structure)) | |
9 wiki.start() | |
10 return wiki | |
11 | |
51 | 12 def testSimplePage(self): |
13 self.wiki = self._getWikiFromStructure({ | |
14 'foo.txt': 'A test page.' | |
15 }) | |
16 page = Page(self.wiki, 'foo') | |
17 self.assertEqual('foo', page.url) | |
18 self.assertEqual('A test page.', page.raw_text) | |
19 self.assertEqual('A test page.', page.formatted_text) | |
20 self.assertEqual('foo', page.title) | |
21 self.assertEqual('A test page.', page.text) | |
22 self.assertEqual({}, page.local_meta) | |
23 self.assertEqual([], page.local_links) | |
24 | |
25 def testPageMeta(self): | |
26 self.wiki = self._getWikiFromStructure({ | |
27 'foo.txt': "A page with simple meta.\n{{bar: baz}}\n{{is_test: }}" | |
28 }) | |
29 page = Page(self.wiki, 'foo') | |
30 self.assertEqual('foo', page.url) | |
31 self.assertEqual("A page with simple meta.\n{{bar: baz}}\n{{is_test: }}", page.raw_text) | |
32 self.assertEqual('A page with simple meta.\n\n', page.formatted_text) | |
33 self.assertEqual('foo', page.title) | |
34 self.assertEqual('A page with simple meta.\n\n', page.text) | |
35 self.assertEqual({'bar': 'baz', 'is_test': True}, page.local_meta) | |
36 self.assertEqual([], page.local_links) | |
37 | |
38 def testPageTitleMeta(self): | |
39 self.wiki = self._getWikiFromStructure({ | |
40 'test_title.txt': "A page with a custom title.\n{{title: TEST-TITLE}}" | |
41 }) | |
42 page = Page(self.wiki, 'test_title') | |
43 self.assertEqual('test_title', page.url) | |
44 self.assertEqual("A page with a custom title.\n{{title: TEST-TITLE}}", page.raw_text) | |
45 self.assertEqual('A page with a custom title.\n', page.formatted_text) | |
46 self.assertEqual('TEST-TITLE', page.title) | |
47 self.assertEqual('A page with a custom title.\n', page.text) | |
48 self.assertEqual({'title': 'TEST-TITLE'}, page.local_meta) | |
49 self.assertEqual([], page.local_links) | |
50 | |
51 def testPageOutLinks(self): | |
52 self.wiki = self._getWikiFromStructure({ | |
53 'test_links.txt': "Follow a link to the [[Sandbox]]. Or to [[this page|Other Sandbox]].", | |
54 'sandbox.txt': "This is just a placeholder." | |
55 }) | |
56 self.assertTrue(self.wiki.pageExists('sandbox', from_db=False)) | |
57 page = Page(self.wiki, 'test_links') | |
58 self.assertEqual('test_links', page.url) | |
59 self.assertEqual("Follow a link to the [[Sandbox]]. Or to [[this page|Other Sandbox]].", page.raw_text) | |
54 | 60 self.assertEqual( |
61 "Follow a link to the %s. Or to %s." % ( | |
62 format_link('Sandbox', 'sandbox'), | |
63 format_link('this page', 'other-sandbox', True)), | |
64 page.formatted_text) | |
51 | 65 self.assertEqual(set(['sandbox', 'other-sandbox']), set(page.local_links)) |
66 | |
67 def testPageRelativeOutLinks(self): | |
68 self.wiki = self._getWikiFromStructure({ | |
69 'first.txt': "Go to [[First Sibling]].", | |
70 'first-sibling.txt': "Go back to [[First]], or to [[sub_dir/Second]].", | |
71 'sub_dir': { | |
72 'second.txt': "Go back to [[../First]], or to [[Second Sibling]].", | |
73 'second-sibling.txt': "Go back to [[Second]]." | |
74 } | |
75 }) | |
76 first = Page(self.wiki, 'first') | |
77 self.assertEqual(['first-sibling'], first.local_links) | |
78 first2 = Page(self.wiki, 'first-sibling') | |
79 self.assertEqual(['first', 'sub_dir/second'], first2.local_links) | |
80 second = Page(self.wiki, 'sub_dir/second') | |
81 self.assertEqual(['first', 'sub_dir/second-sibling'], second.local_links) | |
82 second2 = Page(self.wiki, 'sub_dir/second-sibling') | |
83 self.assertEqual(['sub_dir/second'], second2.local_links) | |
84 | |
55 | 85 def testGenericUrl(self): |
86 self.wiki = self._getWikiFromStructure({ | |
87 'foo.txt': "URL: [[url:/blah/boo/image.png]]" | |
88 }) | |
89 foo = Page(self.wiki, 'foo') | |
90 self.assertEqual("URL: /files/blah/boo/image.png", foo.formatted_text) | |
91 | |
53 | 92 def testPageInclude(self): |
93 self.wiki = self._getWikiFromStructure({ | |
94 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", | |
95 'Trans Desc.txt': "BLAH\n" | |
96 }) | |
97 foo = Page(self.wiki, 'foo') | |
64
0b4f4c23770a
Removed specific "include"-related properties from the code and DB.
Ludovic Chabant <ludovic@chabant.com>
parents:
55
diff
changeset
|
98 self.assertEqual({'include': 'trans-desc'}, foo.local_meta) |
54 | 99 self.assertEqual( |
100 "A test page.\n%s" % format_include('trans-desc'), | |
101 foo.formatted_text) | |
53 | 102 self.assertEqual("A test page.\nBLAH\n\n", foo.text) |
103 | |
104 def testPageIncludeWithMeta(self): | |
105 self.wiki = self._getWikiFromStructure({ | |
106 'Foo.txt': "A test page.\n{{include: trans-desc}}\n", | |
107 'Trans Desc.txt': "BLAH: [[Somewhere]]\n{{bar: 42}}\n{{__secret: love}}\n{{+given: hope}}" | |
108 }) | |
109 foo = Page(self.wiki, 'foo') | |
110 self.assertEqual([], foo.local_links) | |
111 self.assertEqual({'include': 'trans-desc'}, foo.local_meta) | |
54 | 112 self.assertEqual( |
113 "A test page.\n%s" % format_include('trans-desc'), | |
114 foo.formatted_text) | |
115 self.assertEqual( | |
116 "A test page.\nBLAH: %s\n\n\n\n" % format_link('Somewhere', 'somewhere', True), | |
117 foo.text) | |
53 | 118 self.assertEqual(['somewhere'], foo.all_links) |
119 self.assertEqual({'bar': '42', 'given': 'hope', 'include': 'trans-desc'}, foo.all_meta) | |
120 | |
121 def testPageIncludeWithTemplating(self): | |
122 self.wiki = self._getWikiFromStructure({ | |
123 'Foo.txt': "A test page.\n{{include: greeting|name=Dave|what=drink}}\n", | |
124 'Greeting.txt': "Hello {{name}}, would you like a {{what}}?" | |
125 }) | |
126 foo = Page(self.wiki, 'foo') | |
54 | 127 self.assertEqual( |
128 "A test page.\n%s" % format_include('greeting', 'name=Dave|what=drink'), | |
129 foo.formatted_text) | |
53 | 130 self.assertEqual("A test page.\nHello Dave, would you like a drink?\n", foo.text) |
131 | |
54 | 132 def testGivenOnlyInclude(self): |
133 self.wiki = self._getWikiFromStructure({ | |
134 'Base.txt': "The base page.\n{{include: Template 1}}", | |
135 'Template 1.txt': "TEMPLATE!\n{{+include: Template 2}}", | |
136 'Template 2.txt': "MORE TEMPLATE!" | |
137 }) | |
138 tpl1 = Page(self.wiki, 'template-1') | |
139 self.assertEqual( | |
140 "TEMPLATE!\n%s" % format_include('template-2', mod='+'), | |
141 tpl1.formatted_text) | |
142 self.assertEqual("TEMPLATE!\n\n", tpl1.text) | |
143 base = Page(self.wiki, 'base') | |
144 self.assertEqual("The base page.\nTEMPLATE!\nMORE TEMPLATE!\n\n", base.text) | |
145 | |
146 def testDoublePageIncludeWithMeta(self): | |
147 return | |
148 self.wiki = self._getWikiFromStructure({ | |
149 'Base.txt': "The base page.\n{{include: Template 1}}", | |
150 'Wrong.txt': "{{include: Template 2}}", | |
151 'Template 1.txt': "{{foo: bar}}\n{{+category: blah}}\n{{+include: Template 2}}\n{{__secret1: ssh}}", | |
152 'Template 2.txt': "{{+category: yolo}}", | |
153 'Query 1.txt': "{{query: category=yolo}}", | |
154 'Query 2.txt': "{{query: category=blah}}" | |
155 }) | |
156 base = Page(self.wiki, 'base') | |
157 self.assertEqual({ | |
158 'foo': 'bar', | |
159 'category': ['blah', 'yolo'] | |
160 }, base.all_meta) | |
161 tpl1 = Page(self.wiki, 'template-1') | |
162 self.assertEqual({ | |
163 'foo': 'bar', | |
164 '+category': 'blah', | |
165 '+include': 'template-2', | |
166 '__secret': 'ssh' | |
167 }, tpl1.all_meta) | |
168 self.assertEqual( | |
169 "\n\n%s\n\n" % format_include('template-2'), | |
170 tpl1.text) | |
171 q1 = Page(self.wiki, 'query-1') | |
172 self.assertEqual( | |
173 "<ul>\n<li>%s</li>\n<li>%s</li>\n</ul>" % (format_link('Base', 'base'), format_link('Wrong', 'wrong')), | |
174 q1.text) | |
175 q2 = Page(self.wiki, 'query-2') | |
176 self.assertEqual( | |
177 "<ul>\n<li>%s</li>\n</ul>" % format_link('Base', 'base'), | |
178 q2.text) | |
179 |