From 392d992f8295f96632179e01e790465cc9c8d3ec Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Fri, 1 Oct 2010 02:02:58 +0000 Subject: Fixed #7048 -- Added ClearableFileInput widget to clear file fields. Thanks for report and patch, jarrow and Carl Meyer. git-svn-id: http://code.djangoproject.com/svn/django/trunk@13968 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/forms/fields.py | 4 ++ tests/regressiontests/forms/tests.py | 2 +- tests/regressiontests/forms/widgets.py | 74 ++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) (limited to 'tests/regressiontests/forms') 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'something
Change: ') + + 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: something
Change: ') + + 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'') + + 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) -- cgit v1.3