diff options
Diffstat (limited to 'tests/regressiontests/forms')
| -rw-r--r-- | tests/regressiontests/forms/fields.py | 4 | ||||
| -rw-r--r-- | tests/regressiontests/forms/tests.py | 2 | ||||
| -rw-r--r-- | tests/regressiontests/forms/widgets.py | 74 |
3 files changed, 79 insertions, 1 deletions
diff --git a/tests/regressiontests/forms/fields.py b/tests/regressiontests/forms/fields.py index e4f2c261c9..d29e2e8e43 100644 --- a/tests/regressiontests/forms/fields.py +++ b/tests/regressiontests/forms/fields.py @@ -57,6 +57,10 @@ class FieldsTests(TestCase): except error, e: self.assertEqual(message, str(e)) + def test_field_sets_widget_is_required(self): + self.assertEqual(Field(required=True).widget.is_required, True) + self.assertEqual(Field(required=False).widget.is_required, False) + # CharField ################################################################### def test_charfield_0(self): diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py index 7a91cb701e..1871d4f89a 100644 --- a/tests/regressiontests/forms/tests.py +++ b/tests/regressiontests/forms/tests.py @@ -39,7 +39,7 @@ from media import media_tests from fields import FieldsTests from validators import TestFieldWithValidators -from widgets import WidgetTests +from widgets import WidgetTests, ClearableFileInputTests from input_formats import * diff --git a/tests/regressiontests/forms/widgets.py b/tests/regressiontests/forms/widgets.py index 59b33d5210..10483a7675 100644 --- a/tests/regressiontests/forms/widgets.py +++ b/tests/regressiontests/forms/widgets.py @@ -1269,6 +1269,7 @@ u'<input type="hidden" name="date_0" value="17.09.2007" /><input type="hidden" n from django.utils import copycompat as copy from unittest import TestCase from django import forms +from django.core.files.uploadedfile import SimpleUploadedFile class SelectAndTextWidget(forms.MultiWidget): @@ -1323,3 +1324,76 @@ class WidgetTests(TestCase): self.assertFalse(form.is_valid()) form = SplitDateRequiredForm({'field': ['', '']}) self.assertFalse(form.is_valid()) + + +class FakeFieldFile(object): + """ + Quacks like a FieldFile (has a .url and unicode representation), but + doesn't require us to care about storages etc. + + """ + url = 'something' + + def __unicode__(self): + return self.url + +class ClearableFileInputTests(TestCase): + def test_clear_input_renders(self): + """ + A ClearableFileInput with is_required False and rendered with + an initial value that is a file renders a clear checkbox. + + """ + widget = forms.ClearableFileInput() + widget.is_required = False + self.assertEqual(widget.render('myfile', FakeFieldFile()), + u'Currently: <a target="_blank" href="something">something</a> <input type="checkbox" name="myfile-clear" id="myfile-clear_id" /> <label for="myfile-clear_id">Clear</label><br />Change: <input type="file" name="myfile" />') + + def test_clear_input_renders_only_if_not_required(self): + """ + A ClearableFileInput with is_required=False does not render a clear + checkbox. + + """ + widget = forms.ClearableFileInput() + widget.is_required = True + self.assertEqual(widget.render('myfile', FakeFieldFile()), + u'Currently: <a target="_blank" href="something">something</a> <br />Change: <input type="file" name="myfile" />') + + def test_clear_input_renders_only_if_initial(self): + """ + A ClearableFileInput instantiated with no initial value does not render + a clear checkbox. + + """ + widget = forms.ClearableFileInput() + widget.is_required = False + self.assertEqual(widget.render('myfile', None), + u'<input type="file" name="myfile" />') + + def test_clear_input_checked_returns_false(self): + """ + ClearableFileInput.value_from_datadict returns False if the clear + checkbox is checked, if not required. + + """ + widget = forms.ClearableFileInput() + widget.is_required = False + self.assertEqual(widget.value_from_datadict( + data={'myfile-clear': True}, + files={}, + name='myfile'), False) + + def test_clear_input_checked_returns_false_only_if_not_required(self): + """ + ClearableFileInput.value_from_datadict never returns False if the field + is required. + + """ + widget = forms.ClearableFileInput() + widget.is_required = True + f = SimpleUploadedFile('something.txt', 'content') + self.assertEqual(widget.value_from_datadict( + data={'myfile-clear': True}, + files={'myfile': f}, + name='myfile'), f) |
