summaryrefslogtreecommitdiff
path: root/tests/forms_tests
diff options
context:
space:
mode:
authorAndrew Godwin <andrew@aeracode.org>2013-05-19 03:56:14 -0700
committerAndrew Godwin <andrew@aeracode.org>2013-05-19 03:56:14 -0700
commit04e0fc029f6868221dbba850e5a8830c8d11c42c (patch)
tree1f3eeeb4ea46b44e60c92000b3dcbf9be5e22dba /tests/forms_tests
parent7a99d1e167f81c5fcd1b9f7f548c5d6959cef2ef (diff)
parentb11b036145d6a1e9d2192e332c8a221a595be1b6 (diff)
Merge pull request #1094 from senko/ticket_11160
Fixed #11160: Formset non_form_errors returns ErrorList() if is_valid is not called
Diffstat (limited to 'tests/forms_tests')
-rw-r--r--tests/forms_tests/tests/test_formsets.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/forms_tests/tests/test_formsets.py b/tests/forms_tests/tests/test_formsets.py
index 4ac3c5ecf1..31adb921ba 100644
--- a/tests/forms_tests/tests/test_formsets.py
+++ b/tests/forms_tests/tests/test_formsets.py
@@ -972,6 +972,20 @@ class FormsFormsetTestCase(TestCase):
finally:
formsets.DEFAULT_MAX_NUM = _old_DEFAULT_MAX_NUM
+ def test_non_form_errors_run_full_clean(self):
+ # Regression test for #11160
+ # If non_form_errors() is called without calling is_valid() first,
+ # it should ensure that full_clean() is called.
+ class BaseCustomFormSet(BaseFormSet):
+ def clean(self):
+ raise ValidationError("This is a non-form error")
+
+ ChoiceFormSet = formset_factory(Choice, formset=BaseCustomFormSet)
+ formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
+ self.assertTrue(isinstance(formset.non_form_errors(), ErrorList))
+ self.assertEqual(list(formset.non_form_errors()),
+ ['This is a non-form error'])
+
data = {
'choices-TOTAL_FORMS': '1', # the number of forms rendered