comparison test/test_htmltemplate.py @ 890:a568596dbea7

Unit tests and a few fixes.
author Richard Jones <richard@users.sourceforge.net>
date Thu, 18 Jul 2002 23:07:08 +0000
parents 37ce3f2e05b2
children b0d3d3535998
comparison
equal deleted inserted replaced
889:52c05cab7955 890:a568596dbea7
6 # 6 #
7 # This module is distributed in the hope that it will be useful, 7 # This module is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of 8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 # 10 #
11 # $Id: test_htmltemplate.py,v 1.16 2002-07-09 05:20:09 richard Exp $ 11 # $Id: test_htmltemplate.py,v 1.17 2002-07-18 23:07:07 richard Exp $
12 12
13 import unittest, cgi, time 13 import unittest, cgi, time
14 14
15 from roundup import date, password 15 from roundup import date, password
16 from roundup.htmltemplate import TemplateFunctions 16 from roundup.htmltemplate import TemplateFunctions
17 from roundup.i18n import _ 17 from roundup.i18n import _
18 from roundup.hyperdb import String, Password, Date, Interval, Link, Multilink 18 from roundup.hyperdb import String, Password, Date, Interval, Link, \
19 Multilink, Boolean, Number
19 20
20 class Class: 21 class Class:
21 def get(self, nodeid, attribute, default=None): 22 def get(self, nodeid, attribute, default=None):
22 if attribute == 'string': 23 if attribute == 'string':
23 return 'Node %s: I am a string'%nodeid 24 return 'Node %s: I am a string'%nodeid
24 elif attribute == 'filename': 25 elif attribute == 'filename':
25 return 'file.foo' 26 return 'file.foo'
26 elif attribute == 'date': 27 elif attribute == 'date':
27 return date.Date('2000-01-01') 28 return date.Date('2000-01-01')
29 elif attribute == 'boolean':
30 return 0
31 elif attribute == 'number':
32 return 1234
28 elif attribute == 'reldate': 33 elif attribute == 'reldate':
29 return date.Date() + date.Interval('- 2y 1m') 34 return date.Date() + date.Interval('- 2y 1m')
30 elif attribute == 'interval': 35 elif attribute == 'interval':
31 return date.Interval('-3d') 36 return date.Interval('-3d')
32 elif attribute == 'link': 37 elif attribute == 'link':
50 def getprops(self): 55 def getprops(self):
51 return {'string': String(), 'date': Date(), 'interval': Interval(), 56 return {'string': String(), 'date': Date(), 'interval': Interval(),
52 'link': Link('other'), 'multilink': Multilink('other'), 57 'link': Link('other'), 'multilink': Multilink('other'),
53 'password': Password(), 'html': String(), 'key': String(), 58 'password': Password(), 'html': String(), 'key': String(),
54 'novalue': String(), 'filename': String(), 'multiline': String(), 59 'novalue': String(), 'filename': String(), 'multiline': String(),
55 'reldate': Date(), 'email': String()} 60 'reldate': Date(), 'email': String(), 'boolean': Boolean(),
61 'number': Number()}
56 def labelprop(self, default_to_id=0): 62 def labelprop(self, default_to_id=0):
57 return 'key' 63 return 'key'
58 64
59 class Database: 65 class Database:
60 classes = {'other': Class()} 66 classes = {'other': Class()}
101 self.assertEqual(self.tf.do_plain('link'), 'the key1') 107 self.assertEqual(self.tf.do_plain('link'), 'the key1')
102 108
103 def testPlain_multilink(self): 109 def testPlain_multilink(self):
104 self.assertEqual(self.tf.do_plain('multilink'), 'the key1, the key2') 110 self.assertEqual(self.tf.do_plain('multilink'), 'the key1, the key2')
105 111
112 def testPlain_boolean(self):
113 self.assertEqual(self.tf.do_plain('boolean'), 'No')
114
115 def testPlain_number(self):
116 self.assertEqual(self.tf.do_plain('number'), '1234')
106 117
107 # def do_field(self, property, size=None, showid=0): 118 # def do_field(self, property, size=None, showid=0):
108 def testField_string(self): 119 def testField_string(self):
109 self.assertEqual(self.tf.do_field('string'), 120 self.assertEqual(self.tf.do_field('string'),
110 '<input name="string" value="Node 1: I am a string" size="30">') 121 '<input name="string" value="Node 1: I am a string" size="30">')
146 def testField_multilink(self): 157 def testField_multilink(self):
147 self.assertEqual(self.tf.do_field('multilink'), 158 self.assertEqual(self.tf.do_field('multilink'),
148 '<input name="multilink" size="30" value="the key1,the key2">') 159 '<input name="multilink" size="30" value="the key1,the key2">')
149 self.assertEqual(self.tf.do_field('multilink', size=10), 160 self.assertEqual(self.tf.do_field('multilink', size=10),
150 '<input name="multilink" size="10" value="the key1,the key2">') 161 '<input name="multilink" size="10" value="the key1,the key2">')
162
163 def testField_boolean(self):
164 self.assertEqual(self.tf.do_field('boolean'),
165 '<input type="checkbox" name="boolean" >')
166
167 def testField_number(self):
168 self.assertEqual(self.tf.do_field('number'),
169 '<input name="number" value="1234" size="30">')
170 self.assertEqual(self.tf.do_field('number', size=10),
171 '<input name="number" value="1234" size="10">')
151 172
152 # def do_multiline(self, property, rows=5, cols=40) 173 # def do_multiline(self, property, rows=5, cols=40)
153 def testMultiline_string(self): 174 def testMultiline_string(self):
154 self.assertEqual(self.tf.do_multiline('multiline'), 175 self.assertEqual(self.tf.do_multiline('multiline'),
155 '<textarea name="multiline" rows="5" cols="40">' 176 '<textarea name="multiline" rows="5" cols="40">'
166 self.assertEqual(self.tf.do_multiline('date'), s) 187 self.assertEqual(self.tf.do_multiline('date'), s)
167 self.assertEqual(self.tf.do_multiline('interval'), s) 188 self.assertEqual(self.tf.do_multiline('interval'), s)
168 self.assertEqual(self.tf.do_multiline('password'), s) 189 self.assertEqual(self.tf.do_multiline('password'), s)
169 self.assertEqual(self.tf.do_multiline('link'), s) 190 self.assertEqual(self.tf.do_multiline('link'), s)
170 self.assertEqual(self.tf.do_multiline('multilink'), s) 191 self.assertEqual(self.tf.do_multiline('multilink'), s)
192 self.assertEqual(self.tf.do_multiline('boolean'), s)
193 self.assertEqual(self.tf.do_multiline('number'), s)
171 194
172 # def do_menu(self, property, size=None, height=None, showid=0): 195 # def do_menu(self, property, size=None, height=None, showid=0):
173 def testMenu_nonlinks(self): 196 def testMenu_nonlinks(self):
174 s = _('[Menu: not a link]') 197 s = _('[Menu: not a link]')
175 self.assertEqual(self.tf.do_menu('string'), s) 198 self.assertEqual(self.tf.do_menu('string'), s)
176 self.assertEqual(self.tf.do_menu('date'), s) 199 self.assertEqual(self.tf.do_menu('date'), s)
177 self.assertEqual(self.tf.do_menu('interval'), s) 200 self.assertEqual(self.tf.do_menu('interval'), s)
178 self.assertEqual(self.tf.do_menu('password'), s) 201 self.assertEqual(self.tf.do_menu('password'), s)
202 self.assertEqual(self.tf.do_menu('boolean'), s)
203 self.assertEqual(self.tf.do_menu('number'), s)
179 204
180 def testMenu_link(self): 205 def testMenu_link(self):
181 self.assertEqual(self.tf.do_menu('link'), '''<select name="link"> 206 self.assertEqual(self.tf.do_menu('link'), '''<select name="link">
182 <option value="-1">- no selection -</option> 207 <option value="-1">- no selection -</option>
183 <option selected value="1">the key1</option> 208 <option selected value="1">the key1</option>
247 '<a href="other1">the key1</a>, <a href="other2">the key2</a>') 272 '<a href="other1">the key1</a>, <a href="other2">the key2</a>')
248 273
249 def testLink_multilink_id(self): 274 def testLink_multilink_id(self):
250 self.assertEqual(self.tf.do_link('multilink', showid=1), 275 self.assertEqual(self.tf.do_link('multilink', showid=1),
251 '<a href="other1" title="the key1">1</a>, <a href="other2" title="the key2">2</a>') 276 '<a href="other1" title="the key1">1</a>, <a href="other2" title="the key2">2</a>')
277
278 def testLink_boolean(self):
279 self.assertEqual(self.tf.do_link('boolean'),
280 '<a href="test_class1">No</a>')
281
282 def testLink_number(self):
283 self.assertEqual(self.tf.do_link('number'),
284 '<a href="test_class1">1234</a>')
252 285
253 # def do_count(self, property, **args): 286 # def do_count(self, property, **args):
254 def testCount_nonlinks(self): 287 def testCount_nonlinks(self):
255 s = _('[Count: not a Multilink]') 288 s = _('[Count: not a Multilink]')
256 self.assertEqual(self.tf.do_count('string'), s) 289 self.assertEqual(self.tf.do_count('string'), s)
257 self.assertEqual(self.tf.do_count('date'), s) 290 self.assertEqual(self.tf.do_count('date'), s)
258 self.assertEqual(self.tf.do_count('interval'), s) 291 self.assertEqual(self.tf.do_count('interval'), s)
259 self.assertEqual(self.tf.do_count('password'), s) 292 self.assertEqual(self.tf.do_count('password'), s)
260 self.assertEqual(self.tf.do_count('link'), s) 293 self.assertEqual(self.tf.do_count('link'), s)
294 self.assertEqual(self.tf.do_count('boolean'), s)
295 self.assertEqual(self.tf.do_count('number'), s)
261 296
262 def testCount_multilink(self): 297 def testCount_multilink(self):
263 self.assertEqual(self.tf.do_count('multilink'), '2') 298 self.assertEqual(self.tf.do_count('multilink'), '2')
264 299
265 # def do_reldate(self, property, pretty=0): 300 # def do_reldate(self, property, pretty=0):
268 self.assertEqual(self.tf.do_reldate('string'), s) 303 self.assertEqual(self.tf.do_reldate('string'), s)
269 self.assertEqual(self.tf.do_reldate('interval'), s) 304 self.assertEqual(self.tf.do_reldate('interval'), s)
270 self.assertEqual(self.tf.do_reldate('password'), s) 305 self.assertEqual(self.tf.do_reldate('password'), s)
271 self.assertEqual(self.tf.do_reldate('link'), s) 306 self.assertEqual(self.tf.do_reldate('link'), s)
272 self.assertEqual(self.tf.do_reldate('multilink'), s) 307 self.assertEqual(self.tf.do_reldate('multilink'), s)
308 self.assertEqual(self.tf.do_reldate('boolean'), s)
309 self.assertEqual(self.tf.do_reldate('number'), s)
273 310
274 def testReldate_date(self): 311 def testReldate_date(self):
275 self.assertEqual(self.tf.do_reldate('reldate'), '- 2y 1m') 312 self.assertEqual(self.tf.do_reldate('reldate'), '- 2y 1m')
276 interval = date.Interval('- 2y 1m') 313 interval = date.Interval('- 2y 1m')
277 self.assertEqual(self.tf.do_reldate('reldate', pretty=1), 314 self.assertEqual(self.tf.do_reldate('reldate', pretty=1),
306 def testDownload_multilink(self): 343 def testDownload_multilink(self):
307 self.assertEqual(self.tf.do_download('multilink'), 344 self.assertEqual(self.tf.do_download('multilink'),
308 '<a href="other1/the key1">the key1</a>, ' 345 '<a href="other1/the key1">the key1</a>, '
309 '<a href="other2/the key2">the key2</a>') 346 '<a href="other2/the key2">the key2</a>')
310 347
348 def testDownload_boolean(self):
349 self.assertEqual(self.tf.do_download('boolean'),
350 '<a href="test_class1/No">No</a>')
351
352 def testDownload_number(self):
353 self.assertEqual(self.tf.do_download('number'),
354 '<a href="test_class1/1234">1234</a>')
355
311 # def do_checklist(self, property, reverse=0): 356 # def do_checklist(self, property, reverse=0):
312 def testChecklink_nonlinks(self): 357 def testChecklist_nonlinks(self):
313 s = _('[Checklist: not a link]') 358 s = _('[Checklist: not a link]')
314 self.assertEqual(self.tf.do_checklist('string'), s) 359 self.assertEqual(self.tf.do_checklist('string'), s)
315 self.assertEqual(self.tf.do_checklist('date'), s) 360 self.assertEqual(self.tf.do_checklist('date'), s)
316 self.assertEqual(self.tf.do_checklist('interval'), s) 361 self.assertEqual(self.tf.do_checklist('interval'), s)
317 self.assertEqual(self.tf.do_checklist('password'), s) 362 self.assertEqual(self.tf.do_checklist('password'), s)
318 363 self.assertEqual(self.tf.do_checklist('boolean'), s)
319 def testChecklink_link(self): 364 self.assertEqual(self.tf.do_checklist('number'), s)
365
366 def testChecklstk_link(self):
320 self.assertEqual(self.tf.do_checklist('link'), 367 self.assertEqual(self.tf.do_checklist('link'),
321 '''the key1:<input type="checkbox" checked name="link" value="the key1"> 368 '''the key1:<input type="checkbox" checked name="link" value="the key1">
322 the key2:<input type="checkbox" name="link" value="the key2"> 369 the key2:<input type="checkbox" name="link" value="the key2">
323 [unselected]:<input type="checkbox" name="link" value="-1">''') 370 [unselected]:<input type="checkbox" name="link" value="-1">''')
324 371
338 self.assertEqual(self.tf.do_list('string'), s) 385 self.assertEqual(self.tf.do_list('string'), s)
339 self.assertEqual(self.tf.do_list('date'), s) 386 self.assertEqual(self.tf.do_list('date'), s)
340 self.assertEqual(self.tf.do_list('interval'), s) 387 self.assertEqual(self.tf.do_list('interval'), s)
341 self.assertEqual(self.tf.do_list('password'), s) 388 self.assertEqual(self.tf.do_list('password'), s)
342 self.assertEqual(self.tf.do_list('link'), s) 389 self.assertEqual(self.tf.do_list('link'), s)
390 self.assertEqual(self.tf.do_list('boolean'), s)
391 self.assertEqual(self.tf.do_list('number'), s)
343 392
344 def testList_multilink(self): 393 def testList_multilink(self):
345 # TODO: test this (needs to have lots and lots of support! 394 # TODO: test this (needs to have lots and lots of support!
346 #self.assertEqual(self.tf.do_list('multilink'),'') 395 #self.assertEqual(self.tf.do_list('multilink'),'')
347 pass 396 pass
360 self.assertEqual(self.tf.do_email('date'), s) 409 self.assertEqual(self.tf.do_email('date'), s)
361 self.assertEqual(self.tf.do_email('interval'), s) 410 self.assertEqual(self.tf.do_email('interval'), s)
362 self.assertEqual(self.tf.do_email('password'), s) 411 self.assertEqual(self.tf.do_email('password'), s)
363 self.assertEqual(self.tf.do_email('link'), s) 412 self.assertEqual(self.tf.do_email('link'), s)
364 self.assertEqual(self.tf.do_email('multilink'), s) 413 self.assertEqual(self.tf.do_email('multilink'), s)
414 self.assertEqual(self.tf.do_email('boolean'), s)
415 self.assertEqual(self.tf.do_email('number'), s)
365 416
366 def suite(): 417 def suite():
367 return unittest.makeSuite(NodeCase, 'test') 418 return unittest.makeSuite(NodeCase, 'test')
368 419
369 420
370 # 421 #
371 # $Log: not supported by cvs2svn $ 422 # $Log: not supported by cvs2svn $
423 # Revision 1.16 2002/07/09 05:20:09 richard
424 # . added email display function - mangles email addrs so they're not so easily
425 # scraped from the web
426 #
372 # Revision 1.15 2002/07/08 06:39:00 richard 427 # Revision 1.15 2002/07/08 06:39:00 richard
373 # Fixed unit test support class so the tests ran again. 428 # Fixed unit test support class so the tests ran again.
374 # 429 #
375 # Revision 1.14 2002/05/15 06:37:31 richard 430 # Revision 1.14 2002/05/15 06:37:31 richard
376 # ehem and the unit test 431 # ehem and the unit test

Roundup Issue Tracker: http://roundup-tracker.org/