From 3254991762b49cfbeb8434842c19bbbad87cd9c6 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Mon, 17 Aug 2020 13:27:08 +0200 Subject: Refs #20347 -- Allowed customizing the maximum number of instantiated forms in generic_inlineformset_factory(). Follow up to 433dd737f94b09043f64b873b0ac067b3f97364b. --- tests/generic_relations/test_forms.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'tests') diff --git a/tests/generic_relations/test_forms.py b/tests/generic_relations/test_forms.py index 4b94f24531..1a05681711 100644 --- a/tests/generic_relations/test_forms.py +++ b/tests/generic_relations/test_forms.py @@ -237,3 +237,37 @@ id="id_generic_relations-taggeditem-content_type-object_id-1-id">

""" % tagge self.assertEqual([tag.tag for tag in tags], ['hunts', 'roars']) hunts, roars = tags self.assertSequenceEqual(lion.tags.order_by('tag'), [hairy, hunts, roars, yellow]) + + def test_absolute_max(self): + GenericFormSet = generic_inlineformset_factory(TaggedItem, absolute_max=1500) + data = { + 'form-TOTAL_FORMS': '1501', + 'form-INITIAL_FORMS': '0', + 'form-MAX_NUM_FORMS': '0', + } + formset = GenericFormSet(data=data, prefix='form') + self.assertIs(formset.is_valid(), False) + self.assertEqual(len(formset.forms), 1500) + self.assertEqual( + formset.non_form_errors(), + ['Please submit 1000 or fewer forms.'], + ) + + def test_absolute_max_with_max_num(self): + GenericFormSet = generic_inlineformset_factory( + TaggedItem, + max_num=20, + absolute_max=100, + ) + data = { + 'form-TOTAL_FORMS': '101', + 'form-INITIAL_FORMS': '0', + 'form-MAX_NUM_FORMS': '0', + } + formset = GenericFormSet(data=data, prefix='form') + self.assertIs(formset.is_valid(), False) + self.assertEqual(len(formset.forms), 100) + self.assertEqual( + formset.non_form_errors(), + ['Please submit 20 or fewer forms.'], + ) -- cgit v1.3