summaryrefslogtreecommitdiff
path: root/tests/model_formsets
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2017-06-26 15:00:30 -0700
committerTim Graham <timograham@gmail.com>2017-07-11 14:33:21 -0400
commitd7881d2020a7337ed128eeef811ef1c1e549b481 (patch)
treeac2ce3626053bb13627601c045a5e52b4093b25b /tests/model_formsets
parent988309a1aeb3726cfa94a8e77a3f7cf7680dde97 (diff)
downloaddjango-d7881d2020a7337ed128eeef811ef1c1e549b481.tar.gz
Fixed #22229 -- Added primary key validation to BaseModelFormSet._construct_form().
Diffstat (limited to 'tests/model_formsets')
-rw-r--r--tests/model_formsets/tests.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/model_formsets/tests.py b/tests/model_formsets/tests.py
index a34c60158b..92d607f7c3 100644
--- a/tests/model_formsets/tests.py
+++ b/tests/model_formsets/tests.py
@@ -1655,6 +1655,50 @@ class ModelFormsetTest(TestCase):
# created.
self.assertQuerysetEqual(Author.objects.all(), ['<Author: Charles>', '<Author: Walt>'])
+ def test_validation_without_id(self):
+ AuthorFormSet = modelformset_factory(Author, fields='__all__')
+ data = {
+ 'form-TOTAL_FORMS': '1',
+ 'form-INITIAL_FORMS': '1',
+ 'form-MAX_NUM_FORMS': '',
+ 'form-0-name': 'Charles',
+ }
+ formset = AuthorFormSet(data)
+ self.assertEqual(
+ formset.errors,
+ [{'id': ['This field is required.']}],
+ )
+
+ def test_validation_with_child_model_without_id(self):
+ BetterAuthorFormSet = modelformset_factory(BetterAuthor, fields='__all__')
+ data = {
+ 'form-TOTAL_FORMS': '1',
+ 'form-INITIAL_FORMS': '1',
+ 'form-MAX_NUM_FORMS': '',
+ 'form-0-name': 'Charles',
+ 'form-0-write_speed': '10',
+ }
+ formset = BetterAuthorFormSet(data)
+ self.assertEqual(
+ formset.errors,
+ [{'author_ptr': ['This field is required.']}],
+ )
+
+ def test_validation_with_invalid_id(self):
+ AuthorFormSet = modelformset_factory(Author, fields='__all__')
+ data = {
+ 'form-TOTAL_FORMS': '1',
+ 'form-INITIAL_FORMS': '1',
+ 'form-MAX_NUM_FORMS': '',
+ 'form-0-id': 'abc',
+ 'form-0-name': 'Charles',
+ }
+ formset = AuthorFormSet(data)
+ self.assertEqual(
+ formset.errors,
+ [{'id': ['Select a valid choice. That choice is not one of the available choices.']}],
+ )
+
def test_validation_with_nonexistent_id(self):
AuthorFormSet = modelformset_factory(Author, fields='__all__')
data = {