summaryrefslogtreecommitdiff
path: root/tests/forms_tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/forms_tests')
-rw-r--r--tests/forms_tests/tests/test_formsets.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/forms_tests/tests/test_formsets.py b/tests/forms_tests/tests/test_formsets.py
index f552f689dc..c1dc8e8560 100644
--- a/tests/forms_tests/tests/test_formsets.py
+++ b/tests/forms_tests/tests/test_formsets.py
@@ -402,6 +402,31 @@ class FormsFormsetTestCase(SimpleTestCase):
self.assertFalse(formset.is_valid())
self.assertEqual(formset.non_form_errors(), ['Please submit 3 or more forms.'])
+ def test_formset_validate_min_unchanged_forms(self):
+ """
+ min_num validation doesn't consider unchanged forms with initial data
+ as "empty".
+ """
+ initial = [
+ {'choice': 'Zero', 'votes': 0},
+ {'choice': 'One', 'votes': 0},
+ ]
+ data = {
+ 'choices-TOTAL_FORMS': '2',
+ 'choices-INITIAL_FORMS': '2',
+ 'choices-MIN_NUM_FORMS': '0',
+ 'choices-MAX_NUM_FORMS': '2',
+ 'choices-0-choice': 'Zero',
+ 'choices-0-votes': '0',
+ 'choices-1-choice': 'One',
+ 'choices-1-votes': '1', # changed from initial
+ }
+ ChoiceFormSet = formset_factory(Choice, min_num=2, validate_min=True)
+ formset = ChoiceFormSet(data, auto_id=False, prefix='choices', initial=initial)
+ self.assertFalse(formset.forms[0].has_changed())
+ self.assertTrue(formset.forms[1].has_changed())
+ self.assertTrue(formset.is_valid())
+
def test_formset_validate_min_excludes_empty_forms(self):
data = {
'choices-TOTAL_FORMS': '2',