diff options
author | Jon Dufresne <jon.dufresne@gmail.com> | 2017-06-26 15:00:30 -0700 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2017-07-11 14:33:21 -0400 |
commit | d7881d2020a7337ed128eeef811ef1c1e549b481 (patch) | |
tree | ac2ce3626053bb13627601c045a5e52b4093b25b /tests/model_formsets | |
parent | 988309a1aeb3726cfa94a8e77a3f7cf7680dde97 (diff) | |
download | django-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.py | 44 |
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 = { |