summaryrefslogtreecommitdiff
path: root/tests/model_formsets
diff options
context:
space:
mode:
Diffstat (limited to 'tests/model_formsets')
-rw-r--r--tests/model_formsets/tests.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/model_formsets/tests.py b/tests/model_formsets/tests.py
index c48f88ded8..8d0c017a61 100644
--- a/tests/model_formsets/tests.py
+++ b/tests/model_formsets/tests.py
@@ -899,6 +899,33 @@ class ModelFormsetTest(TestCase):
self.assertFalse(formset.is_valid())
self.assertEqual(formset.errors, [{'slug': ['Product with this Slug already exists.']}])
+ def test_modelformset_validate_max_flag(self):
+ # If validate_max is set and max_num is less than TOTAL_FORMS in the
+ # data, then throw an exception. MAX_NUM_FORMS in the data is
+ # irrelevant here (it's output as a hint for the client but its
+ # value in the returned data is not checked)
+
+ data = {
+ 'form-TOTAL_FORMS': '2',
+ 'form-INITIAL_FORMS': '0',
+ 'form-MAX_NUM_FORMS': '2', # should be ignored
+ 'form-0-price': '12.00',
+ 'form-0-quantity': '1',
+ 'form-1-price': '24.00',
+ 'form-1-quantity': '2',
+ }
+
+ FormSet = modelformset_factory(Price, extra=1, max_num=1, validate_max=True)
+ formset = FormSet(data)
+ self.assertFalse(formset.is_valid())
+ self.assertEqual(formset.non_form_errors(), ['Please submit 1 or fewer forms.'])
+
+ # Now test the same thing without the validate_max flag to ensure
+ # default behavior is unchanged
+ FormSet = modelformset_factory(Price, extra=1, max_num=1)
+ formset = FormSet(data)
+ self.assertTrue(formset.is_valid())
+
def test_unique_together_validation(self):
FormSet = modelformset_factory(Price, extra=1)
data = {