diff options
| author | Preston Timmons <prestontimmons@gmail.com> | 2015-08-30 21:13:42 -0500 |
|---|---|---|
| committer | Preston Timmons <prestontimmons@gmail.com> | 2015-08-31 23:03:55 -0500 |
| commit | 4c30fa905d9d47b3a2ee82095b1fe56cc2ec2ab5 (patch) | |
| tree | 2bb04d4ecef539e4ebefbd6d750dfd240ddd7f0c /tests/forms_tests/widget_tests/test_multiplehiddeninput.py | |
| parent | 5153a3bfdcec82324d67ff79862384288cf6afe6 (diff) | |
Rewrote form widget tests as proper unittests.
This is preparation for landing the template-based widget rendering
patch and goes a long way to making these tests more useful for future
development. The old doctest heritage is strong here.
Diffstat (limited to 'tests/forms_tests/widget_tests/test_multiplehiddeninput.py')
| -rw-r--r-- | tests/forms_tests/widget_tests/test_multiplehiddeninput.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/forms_tests/widget_tests/test_multiplehiddeninput.py b/tests/forms_tests/widget_tests/test_multiplehiddeninput.py new file mode 100644 index 0000000000..d1c1ae6fa5 --- /dev/null +++ b/tests/forms_tests/widget_tests/test_multiplehiddeninput.py @@ -0,0 +1,75 @@ +from django.forms import MultipleHiddenInput + +from .base import WidgetTest + + +class MultipleHiddenInputTest(WidgetTest): + widget = MultipleHiddenInput() + + def test_render_single(self): + self.check_html( + self.widget, 'email', ['test@example.com'], + html='<input type="hidden" name="email" value="test@example.com" />', + ) + + def test_render_multiple(self): + self.check_html( + self.widget, 'email', ['test@example.com', 'foo@example.com'], + html=( + '<input type="hidden" name="email" value="test@example.com" />\n' + '<input type="hidden" name="email" value="foo@example.com" />' + ), + ) + + def test_render_attrs(self): + self.check_html( + self.widget, 'email', ['test@example.com'], attrs={'class': 'fun'}, + html='<input type="hidden" name="email" value="test@example.com" class="fun" />', + ) + + def test_render_attrs_multiple(self): + self.check_html( + self.widget, 'email', ['test@example.com', 'foo@example.com'], attrs={'class': 'fun'}, + html=( + '<input type="hidden" name="email" value="test@example.com" class="fun" />\n' + '<input type="hidden" name="email" value="foo@example.com" class="fun" />' + ), + ) + + def test_render_attrs_constructor(self): + widget = MultipleHiddenInput(attrs={'class': 'fun'}) + self.check_html(widget, 'email', [], '') + self.check_html( + widget, 'email', ['foo@example.com'], + html='<input type="hidden" class="fun" value="foo@example.com" name="email" />', + ) + self.check_html( + widget, 'email', ['foo@example.com', 'test@example.com'], + html=( + '<input type="hidden" class="fun" value="foo@example.com" name="email" />\n' + '<input type="hidden" class="fun" value="test@example.com" name="email" />' + ), + ) + self.check_html( + widget, 'email', ['foo@example.com'], attrs={'class': 'special'}, + html='<input type="hidden" class="special" value="foo@example.com" name="email" />', + ) + + def test_render_empty(self): + self.check_html(self.widget, 'email', [], '') + + def test_render_none(self): + self.check_html(self.widget, 'email', None, '') + + def test_render_increment_id(self): + """ + Each input should get a separate ID. + """ + self.check_html( + self.widget, 'letters', ['a', 'b', 'c'], attrs={'id': 'hideme'}, + html=( + '<input type="hidden" name="letters" value="a" id="hideme_0" />\n' + '<input type="hidden" name="letters" value="b" id="hideme_1" />\n' + '<input type="hidden" name="letters" value="c" id="hideme_2" />' + ), + ) |
