diff options
Diffstat (limited to 'tests/model_formsets/tests.py')
| -rw-r--r-- | tests/model_formsets/tests.py | 450 |
1 files changed, 342 insertions, 108 deletions
diff --git a/tests/model_formsets/tests.py b/tests/model_formsets/tests.py index 07476ebbc3..b39054c7e4 100644 --- a/tests/model_formsets/tests.py +++ b/tests/model_formsets/tests.py @@ -151,12 +151,24 @@ class ModelFormsetTest(TestCase): formset = AuthorFormSet(queryset=qs) self.assertEqual(len(formset.forms), 3) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_form-0-name">Name:</label> <input id="id_form-0-name" type="text" name="form-0-name" maxlength="100" /><input type="hidden" name="form-0-id" id="id_form-0-id" /></p>') - self.assertHTMLEqual(formset.forms[1].as_p(), - '<p><label for="id_form-1-name">Name:</label> <input id="id_form-1-name" type="text" name="form-1-name" maxlength="100" /><input type="hidden" name="form-1-id" id="id_form-1-id" /></p>') - self.assertHTMLEqual(formset.forms[2].as_p(), - '<p><label for="id_form-2-name">Name:</label> <input id="id_form-2-name" type="text" name="form-2-name" maxlength="100" /><input type="hidden" name="form-2-id" id="id_form-2-id" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_form-0-name">Name:</label>' + '<input id="id_form-0-name" type="text" name="form-0-name" maxlength="100" />' + '<input type="hidden" name="form-0-id" id="id_form-0-id" /></p>' + ) + self.assertHTMLEqual( + formset.forms[1].as_p(), + '<p><label for="id_form-1-name">Name:</label>' + '<input id="id_form-1-name" type="text" name="form-1-name" maxlength="100" />' + '<input type="hidden" name="form-1-id" id="id_form-1-id" /></p>' + ) + self.assertHTMLEqual( + formset.forms[2].as_p(), + '<p><label for="id_form-2-name">Name:</label>' + ' <input id="id_form-2-name" type="text" name="form-2-name" maxlength="100" />' + '<input type="hidden" name="form-2-id" id="id_form-2-id" /></p>' + ) data = { 'form-TOTAL_FORMS': '3', # the number of forms rendered @@ -189,12 +201,24 @@ class ModelFormsetTest(TestCase): formset = AuthorFormSet(queryset=qs) self.assertEqual(len(formset.forms), 3) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_form-0-name">Name:</label> <input id="id_form-0-name" type="text" name="form-0-name" value="Arthur Rimbaud" maxlength="100" /><input type="hidden" name="form-0-id" value="%d" id="id_form-0-id" /></p>' % author2.id) - self.assertHTMLEqual(formset.forms[1].as_p(), - '<p><label for="id_form-1-name">Name:</label> <input id="id_form-1-name" type="text" name="form-1-name" value="Charles Baudelaire" maxlength="100" /><input type="hidden" name="form-1-id" value="%d" id="id_form-1-id" /></p>' % author1.id) - self.assertHTMLEqual(formset.forms[2].as_p(), - '<p><label for="id_form-2-name">Name:</label> <input id="id_form-2-name" type="text" name="form-2-name" maxlength="100" /><input type="hidden" name="form-2-id" id="id_form-2-id" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_form-0-name">Name:</label>' + '<input id="id_form-0-name" type="text" name="form-0-name" value="Arthur Rimbaud" maxlength="100" />' + '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id" /></p>' % author2.id + ) + self.assertHTMLEqual( + formset.forms[1].as_p(), + '<p><label for="id_form-1-name">Name:</label>' + '<input id="id_form-1-name" type="text" name="form-1-name" value="Charles Baudelaire" maxlength="100" />' + '<input type="hidden" name="form-1-id" value="%d" id="id_form-1-id" /></p>' % author1.id + ) + self.assertHTMLEqual( + formset.forms[2].as_p(), + '<p><label for="id_form-2-name">Name:</label>' + '<input id="id_form-2-name" type="text" name="form-2-name" maxlength="100" />' + '<input type="hidden" name="form-2-id" id="id_form-2-id" /></p>' + ) data = { 'form-TOTAL_FORMS': '3', # the number of forms rendered @@ -227,18 +251,41 @@ class ModelFormsetTest(TestCase): formset = AuthorFormSet(queryset=qs) self.assertEqual(len(formset.forms), 4) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_form-0-name">Name:</label> <input id="id_form-0-name" type="text" name="form-0-name" value="Arthur Rimbaud" maxlength="100" /></p>\n' - '<p><label for="id_form-0-DELETE">Delete:</label> <input type="checkbox" name="form-0-DELETE" id="id_form-0-DELETE" /><input type="hidden" name="form-0-id" value="%d" id="id_form-0-id" /></p>' % author2.id) - self.assertHTMLEqual(formset.forms[1].as_p(), - '<p><label for="id_form-1-name">Name:</label> <input id="id_form-1-name" type="text" name="form-1-name" value="Charles Baudelaire" maxlength="100" /></p>\n' - '<p><label for="id_form-1-DELETE">Delete:</label> <input type="checkbox" name="form-1-DELETE" id="id_form-1-DELETE" /><input type="hidden" name="form-1-id" value="%d" id="id_form-1-id" /></p>' % author1.id) - self.assertHTMLEqual(formset.forms[2].as_p(), - '<p><label for="id_form-2-name">Name:</label> <input id="id_form-2-name" type="text" name="form-2-name" value="Paul Verlaine" maxlength="100" /></p>\n' - '<p><label for="id_form-2-DELETE">Delete:</label> <input type="checkbox" name="form-2-DELETE" id="id_form-2-DELETE" /><input type="hidden" name="form-2-id" value="%d" id="id_form-2-id" /></p>' % author3.id) - self.assertHTMLEqual(formset.forms[3].as_p(), - '<p><label for="id_form-3-name">Name:</label> <input id="id_form-3-name" type="text" name="form-3-name" maxlength="100" /></p>\n' - '<p><label for="id_form-3-DELETE">Delete:</label> <input type="checkbox" name="form-3-DELETE" id="id_form-3-DELETE" /><input type="hidden" name="form-3-id" id="id_form-3-id" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_form-0-name">Name:</label>' + '<input id="id_form-0-name" type="text" name="form-0-name" ' + 'value="Arthur Rimbaud" maxlength="100" /></p>' + '<p><label for="id_form-0-DELETE">Delete:</label>' + '<input type="checkbox" name="form-0-DELETE" id="id_form-0-DELETE" />' + '<input type="hidden" name="form-0-id" value="%d" id="id_form-0-id" /></p>' % author2.id + ) + self.assertHTMLEqual( + formset.forms[1].as_p(), + '<p><label for="id_form-1-name">Name:</label>' + '<input id="id_form-1-name" type="text" name="form-1-name" ' + 'value="Charles Baudelaire" maxlength="100" /></p>' + '<p><label for="id_form-1-DELETE">Delete:</label>' + '<input type="checkbox" name="form-1-DELETE" id="id_form-1-DELETE" />' + '<input type="hidden" name="form-1-id" value="%d" id="id_form-1-id" /></p>' % author1.id + ) + self.assertHTMLEqual( + formset.forms[2].as_p(), + '<p><label for="id_form-2-name">Name:</label>' + '<input id="id_form-2-name" type="text" name="form-2-name" ' + 'value="Paul Verlaine" maxlength="100" /></p>' + '<p><label for="id_form-2-DELETE">Delete:</label>' + '<input type="checkbox" name="form-2-DELETE" id="id_form-2-DELETE" />' + '<input type="hidden" name="form-2-id" value="%d" id="id_form-2-id" /></p>' % author3.id + ) + self.assertHTMLEqual( + formset.forms[3].as_p(), + '<p><label for="id_form-3-name">Name:</label>' + '<input id="id_form-3-name" type="text" name="form-3-name" maxlength="100" /></p>' + '<p><label for="id_form-3-DELETE">Delete:</label>' + '<input type="checkbox" name="form-3-DELETE" id="id_form-3-DELETE" />' + '<input type="hidden" name="form-3-id" id="id_form-3-id" /></p>' + ) data = { 'form-TOTAL_FORMS': '4', # the number of forms rendered @@ -480,9 +527,14 @@ class ModelFormsetTest(TestCase): BetterAuthorFormSet = modelformset_factory(BetterAuthor, fields="__all__") formset = BetterAuthorFormSet() self.assertEqual(len(formset.forms), 1) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_form-0-name">Name:</label> <input id="id_form-0-name" type="text" name="form-0-name" maxlength="100" /></p>\n' - '<p><label for="id_form-0-write_speed">Write speed:</label> <input type="number" name="form-0-write_speed" id="id_form-0-write_speed" /><input type="hidden" name="form-0-author_ptr" id="id_form-0-author_ptr" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_form-0-name">Name:</label>' + '<input id="id_form-0-name" type="text" name="form-0-name" maxlength="100" /></p>' + '<p><label for="id_form-0-write_speed">Write speed:</label>' + '<input type="number" name="form-0-write_speed" id="id_form-0-write_speed" />' + '<input type="hidden" name="form-0-author_ptr" id="id_form-0-author_ptr" /></p>' + ) data = { 'form-TOTAL_FORMS': '1', # the number of forms rendered @@ -503,12 +555,22 @@ class ModelFormsetTest(TestCase): formset = BetterAuthorFormSet() self.assertEqual(len(formset.forms), 2) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_form-0-name">Name:</label> <input id="id_form-0-name" type="text" name="form-0-name" value="Ernest Hemingway" maxlength="100" /></p>\n' - '<p><label for="id_form-0-write_speed">Write speed:</label> <input type="number" name="form-0-write_speed" value="10" id="id_form-0-write_speed" /><input type="hidden" name="form-0-author_ptr" value="%d" id="id_form-0-author_ptr" /></p>' % hemingway_id) - self.assertHTMLEqual(formset.forms[1].as_p(), - '<p><label for="id_form-1-name">Name:</label> <input id="id_form-1-name" type="text" name="form-1-name" maxlength="100" /></p>\n' - '<p><label for="id_form-1-write_speed">Write speed:</label> <input type="number" name="form-1-write_speed" id="id_form-1-write_speed" /><input type="hidden" name="form-1-author_ptr" id="id_form-1-author_ptr" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_form-0-name">Name:</label>' + '<input id="id_form-0-name" type="text" name="form-0-name" value="Ernest Hemingway" maxlength="100" /></p>' + '<p><label for="id_form-0-write_speed">Write speed:</label>' + '<input type="number" name="form-0-write_speed" value="10" id="id_form-0-write_speed" />' + '<input type="hidden" name="form-0-author_ptr" value="%d" id="id_form-0-author_ptr" /></p>' % hemingway_id + ) + self.assertHTMLEqual( + formset.forms[1].as_p(), + '<p><label for="id_form-1-name">Name:</label>' + '<input id="id_form-1-name" type="text" name="form-1-name" maxlength="100" /></p>' + '<p><label for="id_form-1-write_speed">Write speed:</label>' + '<input type="number" name="form-1-write_speed" id="id_form-1-write_speed" />' + '<input type="hidden" name="form-1-author_ptr" id="id_form-1-author_ptr" /></p>' + ) data = { 'form-TOTAL_FORMS': '2', # the number of forms rendered @@ -535,12 +597,27 @@ class ModelFormsetTest(TestCase): formset = AuthorBooksFormSet(instance=author) self.assertEqual(len(formset.forms), 3) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_book_set-0-title">Title:</label> <input id="id_book_set-0-title" type="text" name="book_set-0-title" maxlength="100" /><input type="hidden" name="book_set-0-author" value="%d" id="id_book_set-0-author" /><input type="hidden" name="book_set-0-id" id="id_book_set-0-id" /></p>' % author.id) - self.assertHTMLEqual(formset.forms[1].as_p(), - '<p><label for="id_book_set-1-title">Title:</label> <input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100" /><input type="hidden" name="book_set-1-author" value="%d" id="id_book_set-1-author" /><input type="hidden" name="book_set-1-id" id="id_book_set-1-id" /></p>' % author.id) - self.assertHTMLEqual(formset.forms[2].as_p(), - '<p><label for="id_book_set-2-title">Title:</label> <input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100" /><input type="hidden" name="book_set-2-author" value="%d" id="id_book_set-2-author" /><input type="hidden" name="book_set-2-id" id="id_book_set-2-id" /></p>' % author.id) + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_book_set-0-title">Title:</label> <input id="id_book_set-0-title" type="text" ' + 'name="book_set-0-title" maxlength="100" /><input type="hidden" name="book_set-0-author" value="%d" ' + 'id="id_book_set-0-author" /><input type="hidden" name="book_set-0-id" id="id_book_set-0-id" />' + '</p>' % author.id + ) + self.assertHTMLEqual( + formset.forms[1].as_p(), + '<p><label for="id_book_set-1-title">Title:</label>' + '<input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100" />' + '<input type="hidden" name="book_set-1-author" value="%d" id="id_book_set-1-author" />' + '<input type="hidden" name="book_set-1-id" id="id_book_set-1-id" /></p>' % author.id + ) + self.assertHTMLEqual( + formset.forms[2].as_p(), + '<p><label for="id_book_set-2-title">Title:</label>' + '<input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100" />' + '<input type="hidden" name="book_set-2-author" value="%d" id="id_book_set-2-author" />' + '<input type="hidden" name="book_set-2-id" id="id_book_set-2-id" /></p>' % author.id + ) data = { 'book_set-TOTAL_FORMS': '3', # the number of forms rendered @@ -569,12 +646,30 @@ class ModelFormsetTest(TestCase): formset = AuthorBooksFormSet(instance=author) self.assertEqual(len(formset.forms), 3) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_book_set-0-title">Title:</label> <input id="id_book_set-0-title" type="text" name="book_set-0-title" value="Les Fleurs du Mal" maxlength="100" /><input type="hidden" name="book_set-0-author" value="%d" id="id_book_set-0-author" /><input type="hidden" name="book_set-0-id" value="%d" id="id_book_set-0-id" /></p>' % (author.id, book1.id)) - self.assertHTMLEqual(formset.forms[1].as_p(), - '<p><label for="id_book_set-1-title">Title:</label> <input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100" /><input type="hidden" name="book_set-1-author" value="%d" id="id_book_set-1-author" /><input type="hidden" name="book_set-1-id" id="id_book_set-1-id" /></p>' % author.id) - self.assertHTMLEqual(formset.forms[2].as_p(), - '<p><label for="id_book_set-2-title">Title:</label> <input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100" /><input type="hidden" name="book_set-2-author" value="%d" id="id_book_set-2-author" /><input type="hidden" name="book_set-2-id" id="id_book_set-2-id" /></p>' % author.id) + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_book_set-0-title">Title:</label>' + '<input id="id_book_set-0-title" type="text" name="book_set-0-title" ' + 'value="Les Fleurs du Mal" maxlength="100" />' + '<input type="hidden" name="book_set-0-author" value="%d" id="id_book_set-0-author" />' + '<input type="hidden" name="book_set-0-id" value="%d" id="id_book_set-0-id" /></p>' % ( + author.id, book1.id, + ) + ) + self.assertHTMLEqual( + formset.forms[1].as_p(), + '<p><label for="id_book_set-1-title">Title:</label>' + '<input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100" />' + '<input type="hidden" name="book_set-1-author" value="%d" id="id_book_set-1-author" />' + '<input type="hidden" name="book_set-1-id" id="id_book_set-1-id" /></p>' % author.id + ) + self.assertHTMLEqual( + formset.forms[2].as_p(), + '<p><label for="id_book_set-2-title">Title:</label>' + '<input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100" />' + '<input type="hidden" name="book_set-2-author" value="%d" id="id_book_set-2-author" />' + '<input type="hidden" name="book_set-2-id" id="id_book_set-2-id" /></p>' % author.id + ) data = { 'book_set-TOTAL_FORMS': '3', # the number of forms rendered @@ -633,24 +728,45 @@ class ModelFormsetTest(TestCase): formset = AuthorBooksFormSet(prefix="test") self.assertEqual(len(formset.forms), 2) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_test-0-title">Title:</label> <input id="id_test-0-title" type="text" name="test-0-title" maxlength="100" /><input type="hidden" name="test-0-author" id="id_test-0-author" /><input type="hidden" name="test-0-id" id="id_test-0-id" /></p>') - self.assertHTMLEqual(formset.forms[1].as_p(), - '<p><label for="id_test-1-title">Title:</label> <input id="id_test-1-title" type="text" name="test-1-title" maxlength="100" /><input type="hidden" name="test-1-author" id="id_test-1-author" /><input type="hidden" name="test-1-id" id="id_test-1-id" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_test-0-title">Title:</label>' + '<input id="id_test-0-title" type="text" name="test-0-title" maxlength="100" />' + '<input type="hidden" name="test-0-author" id="id_test-0-author" />' + '<input type="hidden" name="test-0-id" id="id_test-0-id" /></p>' + ) + + self.assertHTMLEqual( + formset.forms[1].as_p(), + '<p><label for="id_test-1-title">Title:</label>' + '<input id="id_test-1-title" type="text" name="test-1-title" maxlength="100" />' + '<input type="hidden" name="test-1-author" id="id_test-1-author" />' + '<input type="hidden" name="test-1-id" id="id_test-1-id" /></p>' + ) def test_inline_formsets_with_custom_pk(self): # Test inline formsets where the inline-edited object has a custom # primary key that is not the fk to the parent object. self.maxDiff = 1024 - AuthorBooksFormSet2 = inlineformset_factory(Author, BookWithCustomPK, can_delete=False, extra=1, fields="__all__") + AuthorBooksFormSet2 = inlineformset_factory( + Author, BookWithCustomPK, can_delete=False, extra=1, fields="__all__" + ) author = Author.objects.create(pk=1, name='Charles Baudelaire') formset = AuthorBooksFormSet2(instance=author) self.assertEqual(len(formset.forms), 1) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_bookwithcustompk_set-0-my_pk">My pk:</label> <input id="id_bookwithcustompk_set-0-my_pk" type="number" name="bookwithcustompk_set-0-my_pk" step="1" /></p>\n' - '<p><label for="id_bookwithcustompk_set-0-title">Title:</label> <input id="id_bookwithcustompk_set-0-title" type="text" name="bookwithcustompk_set-0-title" maxlength="100" /><input type="hidden" name="bookwithcustompk_set-0-author" value="1" id="id_bookwithcustompk_set-0-author" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_bookwithcustompk_set-0-my_pk">My pk:</label>' + '<input id="id_bookwithcustompk_set-0-my_pk" type="number" ' + 'name="bookwithcustompk_set-0-my_pk" step="1" /></p>' + '<p><label for="id_bookwithcustompk_set-0-title">Title:</label>' + '<input id="id_bookwithcustompk_set-0-title" type="text" ' + 'name="bookwithcustompk_set-0-title" maxlength="100" />' + '<input type="hidden" name="bookwithcustompk_set-0-author" ' + 'value="1" id="id_bookwithcustompk_set-0-author" /></p>' + ) data = { 'bookwithcustompk_set-TOTAL_FORMS': '1', # the number of forms rendered @@ -680,9 +796,19 @@ class ModelFormsetTest(TestCase): formset = AuthorBooksFormSet3(instance=author) self.assertEqual(len(formset.forms), 1) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_alternatebook_set-0-title">Title:</label> <input id="id_alternatebook_set-0-title" type="text" name="alternatebook_set-0-title" maxlength="100" /></p>\n' - '<p><label for="id_alternatebook_set-0-notes">Notes:</label> <input id="id_alternatebook_set-0-notes" type="text" name="alternatebook_set-0-notes" maxlength="100" /><input type="hidden" name="alternatebook_set-0-author" value="1" id="id_alternatebook_set-0-author" /><input type="hidden" name="alternatebook_set-0-book_ptr" id="id_alternatebook_set-0-book_ptr" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_alternatebook_set-0-title">Title:</label>' + '<input id="id_alternatebook_set-0-title" type="text" ' + 'name="alternatebook_set-0-title" maxlength="100" /></p>' + '<p><label for="id_alternatebook_set-0-notes">Notes:</label>' + '<input id="id_alternatebook_set-0-notes" type="text" ' + 'name="alternatebook_set-0-notes" maxlength="100" />' + '<input type="hidden" name="alternatebook_set-0-author" value="1" ' + 'id="id_alternatebook_set-0-author" />' + '<input type="hidden" name="alternatebook_set-0-book_ptr" ' + 'id="id_alternatebook_set-0-book_ptr" /></p>' + ) data = { 'alternatebook_set-TOTAL_FORMS': '1', # the number of forms rendered @@ -706,7 +832,9 @@ class ModelFormsetTest(TestCase): # Test inline formsets where the inline-edited object has a # unique_together constraint with a nullable member - AuthorBooksFormSet4 = inlineformset_factory(Author, BookWithOptionalAltEditor, can_delete=False, extra=2, fields="__all__") + AuthorBooksFormSet4 = inlineformset_factory( + Author, BookWithOptionalAltEditor, can_delete=False, extra=2, fields="__all__" + ) author = Author.objects.create(pk=1, name='Charles Baudelaire') data = { @@ -771,16 +899,44 @@ class ModelFormsetTest(TestCase): custom_qs = Book.objects.order_by('-title') formset = AuthorBooksFormSet(instance=author, queryset=custom_qs) self.assertEqual(len(formset.forms), 5) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_book_set-0-title">Title:</label> <input id="id_book_set-0-title" type="text" name="book_set-0-title" value="Les Paradis Artificiels" maxlength="100" /><input type="hidden" name="book_set-0-author" value="1" id="id_book_set-0-author" /><input type="hidden" name="book_set-0-id" value="1" id="id_book_set-0-id" /></p>') - self.assertHTMLEqual(formset.forms[1].as_p(), - '<p><label for="id_book_set-1-title">Title:</label> <input id="id_book_set-1-title" type="text" name="book_set-1-title" value="Les Fleurs du Mal" maxlength="100" /><input type="hidden" name="book_set-1-author" value="1" id="id_book_set-1-author" /><input type="hidden" name="book_set-1-id" value="2" id="id_book_set-1-id" /></p>') - self.assertHTMLEqual(formset.forms[2].as_p(), - '<p><label for="id_book_set-2-title">Title:</label> <input id="id_book_set-2-title" type="text" name="book_set-2-title" value="Flowers of Evil" maxlength="100" /><input type="hidden" name="book_set-2-author" value="1" id="id_book_set-2-author" /><input type="hidden" name="book_set-2-id" value="3" id="id_book_set-2-id" /></p>') - self.assertHTMLEqual(formset.forms[3].as_p(), - '<p><label for="id_book_set-3-title">Title:</label> <input id="id_book_set-3-title" type="text" name="book_set-3-title" maxlength="100" /><input type="hidden" name="book_set-3-author" value="1" id="id_book_set-3-author" /><input type="hidden" name="book_set-3-id" id="id_book_set-3-id" /></p>') - self.assertHTMLEqual(formset.forms[4].as_p(), - '<p><label for="id_book_set-4-title">Title:</label> <input id="id_book_set-4-title" type="text" name="book_set-4-title" maxlength="100" /><input type="hidden" name="book_set-4-author" value="1" id="id_book_set-4-author" /><input type="hidden" name="book_set-4-id" id="id_book_set-4-id" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_book_set-0-title">Title:</label>' + '<input id="id_book_set-0-title" type="text" name="book_set-0-title" ' + 'value="Les Paradis Artificiels" maxlength="100" />' + '<input type="hidden" name="book_set-0-author" value="1" id="id_book_set-0-author" />' + '<input type="hidden" name="book_set-0-id" value="1" id="id_book_set-0-id" /></p>' + ) + self.assertHTMLEqual( + formset.forms[1].as_p(), + '<p><label for="id_book_set-1-title">Title:</label>' + '<input id="id_book_set-1-title" type="text" name="book_set-1-title" ' + 'value="Les Fleurs du Mal" maxlength="100" />' + '<input type="hidden" name="book_set-1-author" value="1" id="id_book_set-1-author" />' + '<input type="hidden" name="book_set-1-id" value="2" id="id_book_set-1-id" /></p>' + ) + self.assertHTMLEqual( + formset.forms[2].as_p(), + '<p><label for="id_book_set-2-title">Title:</label>' + '<input id="id_book_set-2-title" type="text" name="book_set-2-title" ' + 'value="Flowers of Evil" maxlength="100" />' + '<input type="hidden" name="book_set-2-author" value="1" id="id_book_set-2-author" />' + '<input type="hidden" name="book_set-2-id" value="3" id="id_book_set-2-id" /></p>' + ) + self.assertHTMLEqual( + formset.forms[3].as_p(), + '<p><label for="id_book_set-3-title">Title:</label>' + '<input id="id_book_set-3-title" type="text" name="book_set-3-title" maxlength="100" />' + '<input type="hidden" name="book_set-3-author" value="1" id="id_book_set-3-author" />' + '<input type="hidden" name="book_set-3-id" id="id_book_set-3-id" /></p>' + ) + self.assertHTMLEqual( + formset.forms[4].as_p(), + '<p><label for="id_book_set-4-title">Title:</label>' + '<input id="id_book_set-4-title" type="text" name="book_set-4-title" maxlength="100" />' + '<input type="hidden" name="book_set-4-author" value="1" id="id_book_set-4-author" />' + '<input type="hidden" name="book_set-4-id" id="id_book_set-4-id" /></p>' + ) data = { 'book_set-TOTAL_FORMS': '5', # the number of forms rendered @@ -800,12 +956,28 @@ class ModelFormsetTest(TestCase): custom_qs = Book.objects.filter(title__startswith='F') formset = AuthorBooksFormSet(instance=author, queryset=custom_qs) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_book_set-0-title">Title:</label> <input id="id_book_set-0-title" type="text" name="book_set-0-title" value="Flowers of Evil" maxlength="100" /><input type="hidden" name="book_set-0-author" value="1" id="id_book_set-0-author" /><input type="hidden" name="book_set-0-id" value="3" id="id_book_set-0-id" /></p>') - self.assertHTMLEqual(formset.forms[1].as_p(), - '<p><label for="id_book_set-1-title">Title:</label> <input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100" /><input type="hidden" name="book_set-1-author" value="1" id="id_book_set-1-author" /><input type="hidden" name="book_set-1-id" id="id_book_set-1-id" /></p>') - self.assertHTMLEqual(formset.forms[2].as_p(), - '<p><label for="id_book_set-2-title">Title:</label> <input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100" /><input type="hidden" name="book_set-2-author" value="1" id="id_book_set-2-author" /><input type="hidden" name="book_set-2-id" id="id_book_set-2-id" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_book_set-0-title">Title:</label>' + '<input id="id_book_set-0-title" type="text" name="book_set-0-title" ' + 'value="Flowers of Evil" maxlength="100" />' + '<input type="hidden" name="book_set-0-author" value="1" id="id_book_set-0-author" />' + '<input type="hidden" name="book_set-0-id" value="3" id="id_book_set-0-id" /></p>' + ) + self.assertHTMLEqual( + formset.forms[1].as_p(), + '<p><label for="id_book_set-1-title">Title:</label>' + '<input id="id_book_set-1-title" type="text" name="book_set-1-title" maxlength="100" />' + '<input type="hidden" name="book_set-1-author" value="1" id="id_book_set-1-author" />' + '<input type="hidden" name="book_set-1-id" id="id_book_set-1-id" /></p>' + ) + self.assertHTMLEqual( + formset.forms[2].as_p(), + '<p><label for="id_book_set-2-title">Title:</label>' + '<input id="id_book_set-2-title" type="text" name="book_set-2-title" maxlength="100" />' + '<input type="hidden" name="book_set-2-author" value="1" id="id_book_set-2-author" />' + '<input type="hidden" name="book_set-2-id" id="id_book_set-2-id" /></p>' + ) data = { 'book_set-TOTAL_FORMS': '3', # the number of forms rendered @@ -863,9 +1035,13 @@ class ModelFormsetTest(TestCase): CustomPrimaryKeyFormSet = modelformset_factory(CustomPrimaryKey, fields="__all__") formset = CustomPrimaryKeyFormSet() self.assertEqual(len(formset.forms), 1) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_form-0-my_pk">My pk:</label> <input id="id_form-0-my_pk" type="text" name="form-0-my_pk" maxlength="10" /></p>\n' - '<p><label for="id_form-0-some_field">Some field:</label> <input id="id_form-0-some_field" type="text" name="form-0-some_field" maxlength="100" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_form-0-my_pk">My pk:</label> <input id="id_form-0-my_pk" type="text" ' + 'name="form-0-my_pk" maxlength="10" /></p>' + '<p><label for="id_form-0-some_field">Some field:</label>' + '<input id="id_form-0-some_field" type="text" name="form-0-some_field" maxlength="100" /></p>' + ) # Custom primary keys with ForeignKey, OneToOneField and AutoField ############ @@ -874,10 +1050,20 @@ class ModelFormsetTest(TestCase): FormSet = inlineformset_factory(Place, Owner, extra=2, can_delete=False, fields="__all__") formset = FormSet(instance=place) self.assertEqual(len(formset.forms), 2) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_owner_set-0-name">Name:</label> <input id="id_owner_set-0-name" type="text" name="owner_set-0-name" maxlength="100" /><input type="hidden" name="owner_set-0-place" value="1" id="id_owner_set-0-place" /><input type="hidden" name="owner_set-0-auto_id" id="id_owner_set-0-auto_id" /></p>') - self.assertHTMLEqual(formset.forms[1].as_p(), - '<p><label for="id_owner_set-1-name">Name:</label> <input id="id_owner_set-1-name" type="text" name="owner_set-1-name" maxlength="100" /><input type="hidden" name="owner_set-1-place" value="1" id="id_owner_set-1-place" /><input type="hidden" name="owner_set-1-auto_id" id="id_owner_set-1-auto_id" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_owner_set-0-name">Name:</label>' + '<input id="id_owner_set-0-name" type="text" name="owner_set-0-name" maxlength="100" />' + '<input type="hidden" name="owner_set-0-place" value="1" id="id_owner_set-0-place" />' + '<input type="hidden" name="owner_set-0-auto_id" id="id_owner_set-0-auto_id" /></p>' + ) + self.assertHTMLEqual( + formset.forms[1].as_p(), + '<p><label for="id_owner_set-1-name">Name:</label>' + '<input id="id_owner_set-1-name" type="text" name="owner_set-1-name" maxlength="100" />' + '<input type="hidden" name="owner_set-1-place" value="1" id="id_owner_set-1-place" />' + '<input type="hidden" name="owner_set-1-auto_id" id="id_owner_set-1-auto_id" /></p>' + ) data = { 'owner_set-TOTAL_FORMS': '2', @@ -898,13 +1084,28 @@ class ModelFormsetTest(TestCase): formset = FormSet(instance=place) self.assertEqual(len(formset.forms), 3) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_owner_set-0-name">Name:</label> <input id="id_owner_set-0-name" type="text" name="owner_set-0-name" value="Joe Perry" maxlength="100" /><input type="hidden" name="owner_set-0-place" value="1" id="id_owner_set-0-place" /><input type="hidden" name="owner_set-0-auto_id" value="%d" id="id_owner_set-0-auto_id" /></p>' - % owner1.auto_id) - self.assertHTMLEqual(formset.forms[1].as_p(), - '<p><label for="id_owner_set-1-name">Name:</label> <input id="id_owner_set-1-name" type="text" name="owner_set-1-name" maxlength="100" /><input type="hidden" name="owner_set-1-place" value="1" id="id_owner_set-1-place" /><input type="hidden" name="owner_set-1-auto_id" id="id_owner_set-1-auto_id" /></p>') - self.assertHTMLEqual(formset.forms[2].as_p(), - '<p><label for="id_owner_set-2-name">Name:</label> <input id="id_owner_set-2-name" type="text" name="owner_set-2-name" maxlength="100" /><input type="hidden" name="owner_set-2-place" value="1" id="id_owner_set-2-place" /><input type="hidden" name="owner_set-2-auto_id" id="id_owner_set-2-auto_id" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_owner_set-0-name">Name:</label>' + '<input id="id_owner_set-0-name" type="text" name="owner_set-0-name" value="Joe Perry" maxlength="100" />' + '<input type="hidden" name="owner_set-0-place" value="1" id="id_owner_set-0-place" />' + '<input type="hidden" name="owner_set-0-auto_id" value="%d" id="id_owner_set-0-auto_id" /></p>' + % owner1.auto_id + ) + self.assertHTMLEqual( + formset.forms[1].as_p(), + '<p><label for="id_owner_set-1-name">Name:</label>' + '<input id="id_owner_set-1-name" type="text" name="owner_set-1-name" maxlength="100" />' + '<input type="hidden" name="owner_set-1-place" value="1" id="id_owner_set-1-place" />' + '<input type="hidden" name="owner_set-1-auto_id" id="id_owner_set-1-auto_id" /></p>' + ) + self.assertHTMLEqual( + formset.forms[2].as_p(), + '<p><label for="id_owner_set-2-name">Name:</label>' + '<input id="id_owner_set-2-name" type="text" name="owner_set-2-name" maxlength="100" />' + '<input type="hidden" name="owner_set-2-place" value="1" id="id_owner_set-2-place" />' + '<input type="hidden" name="owner_set-2-auto_id" id="id_owner_set-2-auto_id" /></p>' + ) data = { 'owner_set-TOTAL_FORMS': '3', @@ -929,14 +1130,18 @@ class ModelFormsetTest(TestCase): FormSet = modelformset_factory(OwnerProfile, fields="__all__") formset = FormSet() - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_form-0-owner">Owner:</label> <select name="form-0-owner" id="id_form-0-owner">\n' - '<option value="" selected="selected">---------</option>\n' - '<option value="%d">Joe Perry at Giordanos</option>\n' - '<option value="%d">Jack Berry at Giordanos</option>\n' - '</select></p>\n' - '<p><label for="id_form-0-age">Age:</label> <input type="number" name="form-0-age" id="id_form-0-age" min="0" /></p>' - % (owner1.auto_id, owner2.auto_id)) + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_form-0-owner">Owner:</label>' + '<select name="form-0-owner" id="id_form-0-owner">' + '<option value="" selected="selected">---------</option>' + '<option value="%d">Joe Perry at Giordanos</option>' + '<option value="%d">Jack Berry at Giordanos</option>' + '</select></p>' + '<p><label for="id_form-0-age">Age:</label>' + '<input type="number" name="form-0-age" id="id_form-0-age" min="0" /></p>' + % (owner1.auto_id, owner2.auto_id) + ) owner1 = Owner.objects.get(name='Joe Perry') FormSet = inlineformset_factory(Owner, OwnerProfile, max_num=1, can_delete=False, fields="__all__") @@ -944,9 +1149,13 @@ class ModelFormsetTest(TestCase): formset = FormSet(instance=owner1) self.assertEqual(len(formset.forms), 1) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_ownerprofile-0-age">Age:</label> <input type="number" name="ownerprofile-0-age" id="id_ownerprofile-0-age" min="0" /><input type="hidden" name="ownerprofile-0-owner" value="%d" id="id_ownerprofile-0-owner" /></p>' - % owner1.auto_id) + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_ownerprofile-0-age">Age:</label>' + '<input type="number" name="ownerprofile-0-age" id="id_ownerprofile-0-age" min="0" />' + '<input type="hidden" name="ownerprofile-0-owner" value="%d" id="id_ownerprofile-0-owner" /></p>' + % owner1.auto_id + ) data = { 'ownerprofile-TOTAL_FORMS': '1', @@ -965,9 +1174,13 @@ class ModelFormsetTest(TestCase): formset = FormSet(instance=owner1) self.assertEqual(len(formset.forms), 1) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_ownerprofile-0-age">Age:</label> <input type="number" name="ownerprofile-0-age" value="54" id="id_ownerprofile-0-age" min="0" /><input type="hidden" name="ownerprofile-0-owner" value="%d" id="id_ownerprofile-0-owner" /></p>' - % owner1.auto_id) + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_ownerprofile-0-age">Age:</label>' + '<input type="number" name="ownerprofile-0-age" value="54" id="id_ownerprofile-0-age" min="0" />' + '<input type="hidden" name="ownerprofile-0-owner" value="%d" id="id_ownerprofile-0-owner" /></p>' + % owner1.auto_id + ) data = { 'ownerprofile-TOTAL_FORMS': '1', @@ -994,9 +1207,15 @@ class ModelFormsetTest(TestCase): formset = FormSet(instance=place) self.assertEqual(len(formset.forms), 1) - self.assertHTMLEqual(formset.forms[0].as_p(), - '<p><label for="id_location_set-0-lat">Lat:</label> <input id="id_location_set-0-lat" type="text" name="location_set-0-lat" maxlength="100" /></p>\n' - '<p><label for="id_location_set-0-lon">Lon:</label> <input id="id_location_set-0-lon" type="text" name="location_set-0-lon" maxlength="100" /><input type="hidden" name="location_set-0-place" value="1" id="id_location_set-0-place" /><input type="hidden" name="location_set-0-id" id="id_location_set-0-id" /></p>') + self.assertHTMLEqual( + formset.forms[0].as_p(), + '<p><label for="id_location_set-0-lat">Lat:</label>' + '<input id="id_location_set-0-lat" type="text" name="location_set-0-lat" maxlength="100" /></p>' + '<p><label for="id_location_set-0-lon">Lon:</label> ' + '<input id="id_location_set-0-lon" type="text" name="location_set-0-lon" maxlength="100" />' + '<input type="hidden" name="location_set-0-place" value="1" id="id_location_set-0-place" />' + '<input type="hidden" name="location_set-0-id" id="id_location_set-0-id" /></p>' + ) def test_foreign_keys_in_parents(self): self.assertEqual(type(_get_foreign_key(Restaurant, Owner)), models.ForeignKey) @@ -1147,9 +1366,17 @@ class ModelFormsetTest(TestCase): now = form.fields['date_joined'].initial() result = form.as_p() result = re.sub(r'[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}(?:\.[0-9]+)?', '__DATETIME__', result) - self.assertHTMLEqual(result, - '<p><label for="id_membership_set-0-date_joined">Date joined:</label> <input type="text" name="membership_set-0-date_joined" value="__DATETIME__" id="id_membership_set-0-date_joined" /><input type="hidden" name="initial-membership_set-0-date_joined" value="__DATETIME__" id="initial-membership_set-0-id_membership_set-0-date_joined" /></p>\n' - '<p><label for="id_membership_set-0-karma">Karma:</label> <input type="number" name="membership_set-0-karma" id="id_membership_set-0-karma" /><input type="hidden" name="membership_set-0-person" value="%d" id="id_membership_set-0-person" /><input type="hidden" name="membership_set-0-id" id="id_membership_set-0-id" /></p>' + self.assertHTMLEqual( + result, + '<p><label for="id_membership_set-0-date_joined">Date joined:</label>' + '<input type="text" name="membership_set-0-date_joined" ' + 'value="__DATETIME__" id="id_membership_set-0-date_joined" />' + '<input type="hidden" name="initial-membership_set-0-date_joined" value="__DATETIME__" ' + 'id="initial-membership_set-0-id_membership_set-0-date_joined" /></p>' + '<p><label for="id_membership_set-0-karma">Karma:</label>' + '<input type="number" name="membership_set-0-karma" id="id_membership_set-0-karma" />' + '<input type="hidden" name="membership_set-0-person" value="%d" id="id_membership_set-0-person" />' + '<input type="hidden" name="membership_set-0-id" id="id_membership_set-0-id" /></p>' % person.id) # test for validation with callable defaults. Validations rely on hidden fields @@ -1192,7 +1419,14 @@ class ModelFormsetTest(TestCase): super(MembershipForm, self).__init__(**kwargs) self.fields['date_joined'].widget = forms.SplitDateTimeWidget() - FormSet = inlineformset_factory(Person, Membership, form=MembershipForm, can_delete=False, extra=1, fields="__all__") + FormSet = inlineformset_factory( + Person, + Membership, + form=MembershipForm, + can_delete=False, + extra=1, + fields="__all__", + ) data = { 'membership_set-TOTAL_FORMS': '1', 'membership_set-INITIAL_FORMS': '0', |
