@@ -147,6 +147,19 @@ def test_serialize_multi(self):
147147 assert_false ('submit2' in serialized .data )
148148
149149
150+ class TestSubmit (unittest .TestCase ):
151+
152+ def setUp (self ):
153+ self .submit = fields .Submit (
154+ '<input type="submit" name="submit1" value="value1" />' )
155+
156+ def test_repr (self ):
157+ assert_equal (
158+ repr (self .submit ),
159+ '<Submit name=submit1, value=value1>'
160+ )
161+
162+
150163class TestParser (unittest .TestCase ):
151164
152165 def setUp (self ):
@@ -282,6 +295,12 @@ def test_invalid_name(self):
282295 html = '<input />'
283296 assert_raises (exceptions .InvalidNameError , lambda : fields .Input (html ))
284297
298+ def test_repr (self ):
299+ assert_equal (
300+ repr (self .input ),
301+ '<Input name=brian, value=may>'
302+ )
303+
285304
286305class TestInputBlank (unittest .TestCase ):
287306
@@ -299,6 +318,12 @@ def test_serialize(self):
299318 {'blank' : '' }
300319 )
301320
321+ def test_repr (self ):
322+ assert_equal (
323+ repr (self .input ),
324+ '<Input name=blank, value=>'
325+ )
326+
302327
303328class TestTextarea (unittest .TestCase ):
304329
@@ -324,6 +349,12 @@ def test_serialize(self):
324349 {'roger' : 'taylor' }
325350 )
326351
352+ def test_repr (self ):
353+ assert_equal (
354+ repr (self .input ),
355+ '<Textarea name=roger, value=taylor>'
356+ )
357+
327358
328359class TestTextareaBlank (unittest .TestCase ):
329360
@@ -341,6 +372,12 @@ def test_serialize(self):
341372 {'blank' : '' }
342373 )
343374
375+ def test_repr (self ):
376+ assert_equal (
377+ repr (self .input ),
378+ '<Textarea name=blank, value=>'
379+ )
380+
344381
345382class TestSelect (unittest .TestCase ):
346383
@@ -383,6 +420,20 @@ def test_serialize(self):
383420 {'john' : "you're" }
384421 )
385422
423+ def test_repr (self ):
424+ # Test default for given html.
425+ assert_equal (
426+ repr (self .input ),
427+ "<Select name=john, value=you're>"
428+ )
429+
430+ # Test a different value.
431+ self .input .value = 'tie'
432+ assert_equal (
433+ repr (self .input ),
434+ '<Select name=john, value=tie>'
435+ )
436+
386437
387438class TestSelectBlank (unittest .TestCase ):
388439
@@ -409,6 +460,12 @@ def test_serialize(self):
409460 {'john' : 'tie' }
410461 )
411462
463+ def test_repr (self ):
464+ assert_equal (
465+ repr (self .input ),
466+ '<Select name=john, value=tie>'
467+ )
468+
412469
413470class TestMultiSelect (unittest .TestCase ):
414471
@@ -422,6 +479,39 @@ def setUp(self):
422479 '''
423480 self .input = fields .MultiSelect (BeautifulSoup (self .html ).find ('select' ))
424481
482+ def test_repr (self ):
483+ # Test default for given html.
484+ assert_equal (
485+ repr (self .input ),
486+ "<MultiSelect name=john, value=[you're]>"
487+ )
488+
489+ # Test after selecting different options.
490+ self .input .value = ['tie' , "you're" , 'the' ]
491+ assert_equal (
492+ repr (self .input ),
493+ "<MultiSelect name=john, value=[tie, you're, the]>"
494+ )
495+
496+
497+ class TestMultiSelectBlank (unittest .TestCase ):
498+
499+ def setUp (self ):
500+ self .html = '''
501+ <select name="john" multiple>
502+ <option value="tie">your mother down</option>
503+ <option value="you're">my best friend</option>
504+ <option value="the">millionaire waltz</option>
505+ </select>
506+ '''
507+ self .input = fields .MultiSelect (BeautifulSoup (self .html ).find ('select' ))
508+
509+ def test_repr (self ):
510+ assert_equal (
511+ repr (self .input ),
512+ "<MultiSelect name=john, value=[]>"
513+ )
514+
425515
426516class TestMixedCase (unittest .TestCase ):
427517
@@ -491,6 +581,20 @@ def test_serialize(self):
491581 {'members' : 'mercury' }
492582 )
493583
584+ def test_repr (self ):
585+ # Test default for given html.
586+ assert_equal (
587+ repr (self .input ),
588+ '<Radio name=members, value=mercury>'
589+ )
590+
591+ # Test after selecting a different option.
592+ self .input .value = 'may'
593+ assert_equal (
594+ repr (self .input ),
595+ '<Radio name=members, value=may>'
596+ )
597+
494598
495599class TestRadioBlank (unittest .TestCase ):
496600
@@ -512,6 +616,12 @@ def test_serialize(self):
512616 {'member' : '' }
513617 )
514618
619+ def test_repr (self ):
620+ assert_equal (
621+ repr (self .input ),
622+ '<Radio name=member, value=>'
623+ )
624+
515625
516626class TestCheckbox (unittest .TestCase ):
517627
@@ -560,6 +670,20 @@ def test_serialize(self):
560670 {'member' : ['mercury' , 'deacon' ]}
561671 )
562672
673+ def test_repr (self ):
674+ # Test default for given html.
675+ assert_equal (
676+ repr (self .input ),
677+ "<Checkbox name=member, value=[mercury, deacon]>"
678+ )
679+
680+ # Test after selecting different inputs.
681+ self .input .value = ['mercury' ]
682+ assert_equal (
683+ repr (self .input ),
684+ "<Checkbox name=member, value=[mercury]>"
685+ )
686+
563687
564688class TestCheckboxBlank (unittest .TestCase ):
565689
@@ -583,6 +707,12 @@ def test_serialize(self):
583707 {'member' : []}
584708 )
585709
710+ def test_repr (self ):
711+ assert_equal (
712+ repr (self .input ),
713+ '<Checkbox name=member, value=[]>'
714+ )
715+
586716
587717class TestFileInput (unittest .TestCase ):
588718
@@ -615,6 +745,21 @@ def test_serialize(self):
615745 {'song' : file }
616746 )
617747
748+ def test_repr (self ):
749+ # Test with no file.
750+ assert_equal (
751+ repr (self .input ),
752+ '<FileInput name=song, value=>'
753+ )
754+
755+ # Test with given temporary file.
756+ temp_file = tempfile .TemporaryFile ('r' )
757+ self .input .value = temp_file
758+ assert_equal (
759+ repr (self .input ),
760+ "<FileInput name=song, value={0}>" .format (temp_file )
761+ )
762+
618763
619764class TestDisabledValues (unittest .TestCase ):
620765
0 commit comments