Mercurial > p > roundup > code
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 |
