diff options
| author | David Smith <smithdc@gmail.com> | 2022-05-05 14:26:09 +0200 |
|---|---|---|
| committer | Carlton Gibson <carlton.gibson@noumenal.es> | 2022-05-17 11:16:54 +0200 |
| commit | d126eba3637d84caa80fa4258e2e59ef07a8260c (patch) | |
| tree | e135d40a0934710bae8dcb7e912b49695e600adb /tests | |
| parent | 6af8673255ad2aca01097db9a8c64dc6b31678c0 (diff) | |
Refs #32339 -- Deprecated default.html form template.
Co-authored-by: Carlton Gibson <carlton.gibson@noumenal.es>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/forms_tests/tests/__init__.py | 4 | ||||
| -rw-r--r-- | tests/forms_tests/tests/test_forms.py | 99 | ||||
| -rw-r--r-- | tests/forms_tests/tests/test_formsets.py | 100 | ||||
| -rw-r--r-- | tests/model_forms/tests.py | 117 | ||||
| -rw-r--r-- | tests/postgres_tests/test_array.py | 14 | ||||
| -rw-r--r-- | tests/postgres_tests/test_ranges.py | 22 | ||||
| -rwxr-xr-x | tests/runtests.py | 3 |
7 files changed, 188 insertions, 171 deletions
diff --git a/tests/forms_tests/tests/__init__.py b/tests/forms_tests/tests/__init__.py index 193a7149a1..1878eaf6e5 100644 --- a/tests/forms_tests/tests/__init__.py +++ b/tests/forms_tests/tests/__init__.py @@ -11,6 +11,8 @@ except ImportError: def jinja2_tests(test_func): test_func = skipIf(jinja2 is None, "this test requires jinja2")(test_func) return override_settings( - FORM_RENDERER="django.forms.renderers.Jinja2", + # RemovedInDjango50Warning: When the deprecation ends, revert to + # FORM_RENDERER="django.forms.renderers.Jinja2", + FORM_RENDERER="django.forms.renderers.Jinja2DivFormRenderer", TEMPLATES={"BACKEND": "django.template.backends.jinja2.Jinja2"}, )(test_func) diff --git a/tests/forms_tests/tests/test_forms.py b/tests/forms_tests/tests/test_forms.py index e6e396c8a1..ec911ee961 100644 --- a/tests/forms_tests/tests/test_forms.py +++ b/tests/forms_tests/tests/test_forms.py @@ -42,8 +42,9 @@ from django.forms.utils import ErrorList from django.http import QueryDict from django.template import Context, Template from django.test import SimpleTestCase -from django.test.utils import override_settings +from django.test.utils import isolate_lru_cache, override_settings from django.utils.datastructures import MultiValueDict +from django.utils.deprecation import RemovedInDjango50Warning from django.utils.safestring import mark_safe from . import jinja2_tests @@ -149,17 +150,12 @@ class FormsTestCase(SimpleTestCase): ) self.assertHTMLEqual( str(p), - """ - <tr><th><label for="id_first_name">First name:</label></th><td> - <input type="text" name="first_name" value="John" id="id_first_name" - required></td></tr> - <tr><th><label for="id_last_name">Last name:</label></th><td> - <input type="text" name="last_name" value="Lennon" id="id_last_name" - required></td></tr> - <tr><th><label for="id_birthday">Birthday:</label></th><td> - <input type="text" name="birthday" value="1940-10-9" id="id_birthday" - required></td></tr> - """, + '<div><label for="id_first_name">First name:</label><input type="text" ' + 'name="first_name" value="John" required id="id_first_name"></div><div>' + '<label for="id_last_name">Last name:</label><input type="text" ' + 'name="last_name" value="Lennon" required id="id_last_name"></div><div>' + '<label for="id_birthday">Birthday:</label><input type="text" ' + 'name="birthday" value="1940-10-9" required id="id_birthday"></div>', ) self.assertHTMLEqual( p.as_div(), @@ -182,15 +178,15 @@ class FormsTestCase(SimpleTestCase): self.assertEqual(p.cleaned_data, {}) self.assertHTMLEqual( str(p), - """<tr><th><label for="id_first_name">First name:</label></th><td> -<ul class="errorlist"><li>This field is required.</li></ul> -<input type="text" name="first_name" id="id_first_name" required></td></tr> -<tr><th><label for="id_last_name">Last name:</label></th> -<td><ul class="errorlist"><li>This field is required.</li></ul> -<input type="text" name="last_name" id="id_last_name" required></td></tr> -<tr><th><label for="id_birthday">Birthday:</label></th><td> -<ul class="errorlist"><li>This field is required.</li></ul> -<input type="text" name="birthday" id="id_birthday" required></td></tr>""", + '<div><label for="id_first_name">First name:</label>' + '<ul class="errorlist"><li>This field is required.</li></ul>' + '<input type="text" name="first_name" required id="id_first_name"></div>' + '<div><label for="id_last_name">Last name:</label>' + '<ul class="errorlist"><li>This field is required.</li></ul>' + '<input type="text" name="last_name" required id="id_last_name"></div><div>' + '<label for="id_birthday">Birthday:</label>' + '<ul class="errorlist"><li>This field is required.</li></ul>' + '<input type="text" name="birthday" required id="id_birthday"></div>', ) self.assertHTMLEqual( p.as_table(), @@ -261,12 +257,12 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( str(p), - """<tr><th><label for="id_first_name">First name:</label></th><td> -<input type="text" name="first_name" id="id_first_name" required></td></tr> -<tr><th><label for="id_last_name">Last name:</label></th><td> -<input type="text" name="last_name" id="id_last_name" required></td></tr> -<tr><th><label for="id_birthday">Birthday:</label></th><td> -<input type="text" name="birthday" id="id_birthday" required></td></tr>""", + '<div><label for="id_first_name">First name:</label><input type="text" ' + 'name="first_name" id="id_first_name" required></div><div><label ' + 'for="id_last_name">Last name:</label><input type="text" name="last_name" ' + 'id="id_last_name" required></div><div><label for="id_birthday">' + 'Birthday:</label><input type="text" name="birthday" id="id_birthday" ' + "required></div>", ) self.assertHTMLEqual( p.as_table(), @@ -4932,9 +4928,7 @@ class TemplateTests(SimpleTestCase): t = Template( '<form method="post">' - "<table>" "{{ form }}" - "</table>" '<input type="submit" required>' "</form>" ) @@ -4944,14 +4938,12 @@ class TemplateTests(SimpleTestCase): self.assertHTMLEqual( my_function("GET", {}), '<form method="post">' - "<table>" - "<tr><th>Username:</th><td>" - '<input type="text" name="username" maxlength="10" required></td></tr>' - "<tr><th>Password1:</th><td>" - '<input type="password" name="password1" required></td></tr>' - "<tr><th>Password2:</th><td>" - '<input type="password" name="password2" required></td></tr>' - "</table>" + "<div>Username:" + '<input type="text" name="username" maxlength="10" required></div>' + "<div>Password1:" + '<input type="password" name="password1" required></div>' + "<div>Password2:" + '<input type="password" name="password2" required></div>' '<input type="submit" required>' "</form>", ) @@ -4966,18 +4958,16 @@ class TemplateTests(SimpleTestCase): }, ), '<form method="post">' - "<table>" - '<tr><td colspan="2"><ul class="errorlist nonfield">' - "<li>Please make sure your passwords match.</li></ul></td></tr>" - '<tr><th>Username:</th><td><ul class="errorlist">' + '<ul class="errorlist nonfield">' + "<li>Please make sure your passwords match.</li></ul>" + '<div>Username:<ul class="errorlist">' "<li>Ensure this value has at most 10 characters (it has 23).</li></ul>" '<input type="text" name="username" ' - 'value="this-is-a-long-username" maxlength="10" required></td></tr>' - "<tr><th>Password1:</th><td>" - '<input type="password" name="password1" required></td></tr>' - "<tr><th>Password2:</th><td>" - '<input type="password" name="password2" required></td></tr>' - "</table>" + 'value="this-is-a-long-username" maxlength="10" required></div>' + "<div>Password1:" + '<input type="password" name="password1" required></div>' + "<div>Password2:" + '<input type="password" name="password2" required></div>' '<input type="submit" required>' "</form>", ) @@ -5054,7 +5044,7 @@ class OverrideTests(SimpleTestCase): f = FirstNameForm() try: - self.assertInHTML("<th>1</th>", f.render()) + f.render() except RecursionError: self.fail("Cyclic reference in BoundField.render().") @@ -5069,3 +5059,16 @@ class OverrideTests(SimpleTestCase): '<label for="id_name" class="required">Name:</label>' '<legend class="required">Language:</legend>', ) + + +class DeprecationTests(SimpleTestCase): + def test_warning(self): + from django.forms.utils import DEFAULT_TEMPLATE_DEPRECATION_MSG + + with isolate_lru_cache(get_default_renderer), self.settings( + FORM_RENDERER="django.forms.renderers.DjangoTemplates" + ), self.assertRaisesMessage( + RemovedInDjango50Warning, DEFAULT_TEMPLATE_DEPRECATION_MSG + ): + form = Person() + str(form) diff --git a/tests/forms_tests/tests/test_formsets.py b/tests/forms_tests/tests/test_formsets.py index 0868b41644..d159409afa 100644 --- a/tests/forms_tests/tests/test_formsets.py +++ b/tests/forms_tests/tests/test_formsets.py @@ -23,10 +23,12 @@ from django.forms.formsets import ( all_valid, formset_factory, ) -from django.forms.renderers import TemplatesSetting +from django.forms.renderers import TemplatesSetting, get_default_renderer from django.forms.utils import ErrorList from django.forms.widgets import HiddenInput from django.test import SimpleTestCase +from django.test.utils import isolate_lru_cache +from django.utils.deprecation import RemovedInDjango50Warning from . import jinja2_tests @@ -125,8 +127,8 @@ class FormsFormsetTestCase(SimpleTestCase): <input type="hidden" name="choices-INITIAL_FORMS" value="0"> <input type="hidden" name="choices-MIN_NUM_FORMS" value="0"> <input type="hidden" name="choices-MAX_NUM_FORMS" value="1000"> -<tr><th>Choice:</th><td><input type="text" name="choices-0-choice"></td></tr> -<tr><th>Votes:</th><td><input type="number" name="choices-0-votes"></td></tr>""", +<div>Choice:<input type="text" name="choices-0-choice"></div> +<div>Votes:<input type="number" name="choices-0-votes"></div>""", ) # FormSet are treated similarly to Forms. FormSet has an is_valid() # method, and a cleaned_data or errors attribute depending on whether @@ -976,12 +978,12 @@ class FormsFormsetTestCase(SimpleTestCase): formset = LimitedFavoriteDrinkFormSet() self.assertHTMLEqual( "\n".join(str(form) for form in formset.forms), - """<tr><th><label for="id_form-0-name">Name:</label></th> -<td><input type="text" name="form-0-name" id="id_form-0-name"></td></tr> -<tr><th><label for="id_form-1-name">Name:</label></th> -<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr> -<tr><th><label for="id_form-2-name">Name:</label></th> -<td><input type="text" name="form-2-name" id="id_form-2-name"></td></tr>""", + """<div><label for="id_form-0-name">Name:</label> + <input type="text" name="form-0-name" id="id_form-0-name"></div> +<div><label for="id_form-1-name">Name:</label> +<input type="text" name="form-1-name" id="id_form-1-name"></div> +<div><label for="id_form-2-name">Name:</label> +<input type="text" name="form-2-name" id="id_form-2-name"></div>""", ) # If max_num is 0 then no form is rendered at all. LimitedFavoriteDrinkFormSet = formset_factory( @@ -997,10 +999,10 @@ class FormsFormsetTestCase(SimpleTestCase): formset = LimitedFavoriteDrinkFormSet() self.assertHTMLEqual( "\n".join(str(form) for form in formset.forms), - """<tr><th><label for="id_form-0-name">Name:</label></th><td> -<input type="text" name="form-0-name" id="id_form-0-name"></td></tr> -<tr><th><label for="id_form-1-name">Name:</label></th> -<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>""", + """<div><label for="id_form-0-name">Name:</label> +<input type="text" name="form-0-name" id="id_form-0-name"></div> +<div><label for="id_form-1-name">Name:</label> +<input type="text" name="form-1-name" id="id_form-1-name"></div>""", ) def test_limiting_extra_lest_than_max_num(self): @@ -1011,8 +1013,8 @@ class FormsFormsetTestCase(SimpleTestCase): formset = LimitedFavoriteDrinkFormSet() self.assertHTMLEqual( "\n".join(str(form) for form in formset.forms), - """<tr><th><label for="id_form-0-name">Name:</label></th> -<td><input type="text" name="form-0-name" id="id_form-0-name"></td></tr>""", + """<div><label for="id_form-0-name">Name:</label> +<input type="text" name="form-0-name" id="id_form-0-name"></div>""", ) def test_max_num_with_initial_data(self): @@ -1024,11 +1026,11 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( "\n".join(str(form) for form in formset.forms), """ - <tr><th><label for="id_form-0-name">Name:</label></th> - <td><input type="text" name="form-0-name" value="Fernet and Coke" - id="id_form-0-name"></td></tr> - <tr><th><label for="id_form-1-name">Name:</label></th> - <td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr> + <div><label for="id_form-0-name">Name:</label> + <input type="text" name="form-0-name" value="Fernet and Coke" + id="id_form-0-name"></div> + <div><label for="id_form-1-name">Name:</label> + <input type="text" name="form-1-name" id="id_form-1-name"></div> """, ) @@ -1056,12 +1058,12 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( "\n".join(str(form) for form in formset.forms), """ - <tr><th><label for="id_form-0-name">Name:</label></th> - <td><input id="id_form-0-name" name="form-0-name" type="text" - value="Fernet and Coke"></td></tr> - <tr><th><label for="id_form-1-name">Name:</label></th> - <td><input id="id_form-1-name" name="form-1-name" type="text" - value="Bloody Mary"></td></tr> + <div><label for="id_form-0-name">Name:</label> + <input id="id_form-0-name" name="form-0-name" type="text" + value="Fernet and Coke"></div> + <div><label for="id_form-1-name">Name:</label> + <input id="id_form-1-name" name="form-1-name" type="text" + value="Bloody Mary"></div> """, ) @@ -1082,18 +1084,15 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( "\n".join(str(form) for form in formset.forms), """ - <tr><th><label for="id_form-0-name">Name:</label></th> - <td> + <div><label for="id_form-0-name">Name:</label> <input id="id_form-0-name" name="form-0-name" type="text" value="Gin Tonic"> - </td></tr> - <tr><th><label for="id_form-1-name">Name:</label></th> - <td> + </div> + <div><label for="id_form-1-name">Name:</label> <input id="id_form-1-name" name="form-1-name" type="text" - value="Bloody Mary"></td></tr> - <tr><th><label for="id_form-2-name">Name:</label></th> - <td> + value="Bloody Mary"></div> + <div><label for="id_form-2-name">Name:</label> <input id="id_form-2-name" name="form-2-name" type="text" - value="Jack and Coke"></td></tr> + value="Jack and Coke"></div> """, ) @@ -1173,12 +1172,11 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( "\n".join(str(form) for form in formset.forms), """ - <tr><th><label for="id_form-0-name">Name:</label></th> - <td> + <div><label for="id_form-0-name">Name:</label> <input type="text" name="form-0-name" value="Gin Tonic" id="id_form-0-name"> - </td></tr> - <tr><th><label for="id_form-1-name">Name:</label></th> - <td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>""", + </div> + <div><label for="id_form-1-name">Name:</label> + <input type="text" name="form-1-name" id="id_form-1-name"></div>""", ) def test_management_form_field_names(self): @@ -1701,16 +1699,16 @@ class TestIsBoundBehavior(SimpleTestCase): # Can still render the formset. self.assertHTMLEqual( str(formset), - '<tr><td colspan="2">' '<ul class="errorlist nonfield">' "<li>(Hidden field TOTAL_FORMS) This field is required.</li>" "<li>(Hidden field INITIAL_FORMS) This field is required.</li>" "</ul>" + "<div>" '<input type="hidden" name="form-TOTAL_FORMS" id="id_form-TOTAL_FORMS">' '<input type="hidden" name="form-INITIAL_FORMS" id="id_form-INITIAL_FORMS">' '<input type="hidden" name="form-MIN_NUM_FORMS" id="id_form-MIN_NUM_FORMS">' '<input type="hidden" name="form-MAX_NUM_FORMS" id="id_form-MAX_NUM_FORMS">' - "</td></tr>\n", + "</div>\n", ) def test_management_form_invalid_data(self): @@ -1732,18 +1730,18 @@ class TestIsBoundBehavior(SimpleTestCase): # Can still render the formset. self.assertHTMLEqual( str(formset), - '<tr><td colspan="2">' '<ul class="errorlist nonfield">' "<li>(Hidden field TOTAL_FORMS) Enter a whole number.</li>" "<li>(Hidden field INITIAL_FORMS) Enter a whole number.</li>" "</ul>" + "<div>" '<input type="hidden" name="form-TOTAL_FORMS" value="two" ' 'id="id_form-TOTAL_FORMS">' '<input type="hidden" name="form-INITIAL_FORMS" value="one" ' 'id="id_form-INITIAL_FORMS">' '<input type="hidden" name="form-MIN_NUM_FORMS" id="id_form-MIN_NUM_FORMS">' '<input type="hidden" name="form-MAX_NUM_FORMS" id="id_form-MAX_NUM_FORMS">' - "</td></tr>\n", + "</div>\n", ) def test_customize_management_form_error(self): @@ -1889,3 +1887,17 @@ class AllValidTests(SimpleTestCase): ] self.assertEqual(formset1._errors, expected_errors) self.assertEqual(formset2._errors, expected_errors) + + +class DeprecationTests(SimpleTestCase): + def test_warning(self): + from django.forms.utils import DEFAULT_TEMPLATE_DEPRECATION_MSG + + with isolate_lru_cache(get_default_renderer), self.settings( + FORM_RENDERER="django.forms.renderers.DjangoTemplates" + ), self.assertRaisesMessage( + RemovedInDjango50Warning, DEFAULT_TEMPLATE_DEPRECATION_MSG + ): + ChoiceFormSet = formset_factory(Choice) + formset = ChoiceFormSet() + str(formset) diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py index a8617444c5..eb9c2484dc 100644 --- a/tests/model_forms/tests.py +++ b/tests/model_forms/tests.py @@ -687,12 +687,12 @@ class ModelFormBaseTest(TestCase): self.assertHTMLEqual( str(SubclassMeta()), - """<tr><th><label for="id_name">Name:</label></th> -<td><input id="id_name" type="text" name="name" maxlength="20" required></td></tr> -<tr><th><label for="id_slug">Slug:</label></th> -<td><input id="id_slug" type="text" name="slug" maxlength="20" required></td></tr> -<tr><th><label for="id_checkbox">Checkbox:</label></th> -<td><input type="checkbox" name="checkbox" id="id_checkbox" required></td></tr>""", + '<div><label for="id_name">Name:</label>' + '<input type="text" name="name" maxlength="20" required id="id_name">' + '</div><div><label for="id_slug">Slug:</label><input type="text" ' + 'name="slug" maxlength="20" required id="id_slug"></div><div>' + '<label for="id_checkbox">Checkbox:</label>' + '<input type="checkbox" name="checkbox" required id="id_checkbox"></div>', ) def test_orderfields_form(self): @@ -704,10 +704,10 @@ class ModelFormBaseTest(TestCase): self.assertEqual(list(OrderFields.base_fields), ["url", "name"]) self.assertHTMLEqual( str(OrderFields()), - """<tr><th><label for="id_url">The URL:</label></th> -<td><input id="id_url" type="text" name="url" maxlength="40" required></td></tr> -<tr><th><label for="id_name">Name:</label></th> -<td><input id="id_name" type="text" name="name" maxlength="20" required></td></tr>""", + '<div><label for="id_url">The URL:</label>' + '<input type="text" name="url" maxlength="40" required id="id_url">' + '</div><div><label for="id_name">Name:</label><input type="text" ' + 'name="name" maxlength="20" required id="id_name"></div>', ) def test_orderfields2_form(self): @@ -1460,12 +1460,11 @@ class ModelFormBasicTests(TestCase): f = BaseCategoryForm() self.assertHTMLEqual( str(f), - """<tr><th><label for="id_name">Name:</label></th> -<td><input id="id_name" type="text" name="name" maxlength="20" required></td></tr> -<tr><th><label for="id_slug">Slug:</label></th> -<td><input id="id_slug" type="text" name="slug" maxlength="20" required></td></tr> -<tr><th><label for="id_url">The URL:</label></th> -<td><input id="id_url" type="text" name="url" maxlength="40" required></td></tr>""", + '<div><label for="id_name">Name:</label><input type="text" name="name" ' + 'maxlength="20" required id="id_name"></div><div><label for="id_slug">Slug:' + '</label><input type="text" name="slug" maxlength="20" required ' + 'id="id_slug"></div><div><label for="id_url">The URL:</label>' + '<input type="text" name="url" maxlength="40" required id="id_url"></div>', ) self.assertHTMLEqual( str(f.as_ul()), @@ -1538,12 +1537,9 @@ class ModelFormBasicTests(TestCase): f = RoykoForm(auto_id=False, instance=self.w_royko) self.assertHTMLEqual( str(f), - """ - <tr><th>Name:</th><td> - <input type="text" name="name" value="Mike Royko" maxlength="50" required> - <br> - <span class="helptext">Use both first and last names.</span></td></tr> - """, + '<div>Name:<div class="helptext">Use both first and last names.</div>' + '<input type="text" name="name" value="Mike Royko" maxlength="50" ' + "required></div>", ) art = Article.objects.create( @@ -1703,30 +1699,39 @@ class ModelFormBasicTests(TestCase): self.assertHTMLEqual( str(f), """ - <tr><th>Headline:</th><td> - <input type="text" name="headline" maxlength="50" required></td></tr> - <tr><th>Slug:</th><td> - <input type="text" name="slug" maxlength="50" required></td></tr> - <tr><th>Pub date:</th><td> - <input type="text" name="pub_date" required></td></tr> - <tr><th>Writer:</th><td><select name="writer" required> - <option value="" selected>---------</option> - <option value="%s">Bob Woodward</option> - <option value="%s">Mike Royko</option> - </select></td></tr> - <tr><th>Article:</th><td> - <textarea rows="10" cols="40" name="article" required></textarea></td></tr> - <tr><th>Categories:</th><td><select multiple name="categories"> - <option value="%s">Entertainment</option> - <option value="%s">It's a test</option> - <option value="%s">Third test</option> - </select></td></tr> - <tr><th>Status:</th><td><select name="status"> - <option value="" selected>---------</option> - <option value="1">Draft</option> - <option value="2">Pending</option> - <option value="3">Live</option> - </select></td></tr> + <div>Headline: + <input type="text" name="headline" maxlength="50" required> + </div> + <div>Slug: + <input type="text" name="slug" maxlength="50" required> + </div> + <div>Pub date: + <input type="text" name="pub_date" required> + </div> + <div>Writer: + <select name="writer" required> + <option value="" selected>---------</option> + <option value="%s">Bob Woodward</option> + <option value="%s">Mike Royko</option> + </select> + </div> + <div>Article: + <textarea name="article" cols="40" rows="10" required></textarea> + </div> + <div>Categories: + <select name="categories" multiple> + <option value="%s">Entertainment</option> + <option value="%s">It's a test</option> + <option value="%s">Third test</option> + </select> + </div> + <div>Status: + <select name="status"> + <option value="" selected>---------</option> + <option value="1">Draft</option><option value="2">Pending</option> + <option value="3">Live</option> + </select> + </div> """ % (self.w_woodward.pk, self.w_royko.pk, self.c1.pk, self.c2.pk, self.c3.pk), ) @@ -1791,12 +1796,8 @@ class ModelFormBasicTests(TestCase): f = PartialArticleForm(auto_id=False) self.assertHTMLEqual( str(f), - """ - <tr><th>Headline:</th><td> - <input type="text" name="headline" maxlength="50" required></td></tr> - <tr><th>Pub date:</th><td> - <input type="text" name="pub_date" required></td></tr> - """, + '<div>Headline:<input type="text" name="headline" maxlength="50" required>' + '</div><div>Pub date:<input type="text" name="pub_date" required></div>', ) class PartialArticleFormWithSlug(forms.ModelForm): @@ -2990,10 +2991,10 @@ class OtherModelFormTests(TestCase): self.assertHTMLEqual( str(CategoryForm()), - """<tr><th><label for="id_description">Description:</label></th> -<td><input type="text" name="description" id="id_description" required></td></tr> -<tr><th><label for="id_url">The URL:</label></th> -<td><input id="id_url" type="text" name="url" maxlength="40" required></td></tr>""", + '<div><label for="id_description">Description:</label><input type="text" ' + 'name="description" required id="id_description"></div><div>' + '<label for="id_url">The URL:</label><input type="text" name="url" ' + 'maxlength="40" required id="id_url"></div>', ) # to_field_name should also work on ModelMultipleChoiceField ################## @@ -3014,8 +3015,8 @@ class OtherModelFormTests(TestCase): self.assertEqual(list(CustomFieldForExclusionForm.base_fields), ["name"]) self.assertHTMLEqual( str(CustomFieldForExclusionForm()), - """<tr><th><label for="id_name">Name:</label></th> -<td><input id="id_name" type="text" name="name" maxlength="10" required></td></tr>""", + '<div><label for="id_name">Name:</label><input type="text" ' + 'name="name" maxlength="10" required id="id_name"></div>', ) def test_iterable_model_m2m(self): diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py index 7243ab6a5a..1100e8f3b0 100644 --- a/tests/postgres_tests/test_array.py +++ b/tests/postgres_tests/test_array.py @@ -1196,14 +1196,12 @@ class TestSplitFormField(PostgreSQLSimpleTestCase): self.assertHTMLEqual( str(SplitForm()), """ - <tr> - <th><label for="id_array_0">Array:</label></th> - <td> - <input id="id_array_0" name="array_0" type="text" required> - <input id="id_array_1" name="array_1" type="text" required> - <input id="id_array_2" name="array_2" type="text" required> - </td> - </tr> + <div> + <label for="id_array_0">Array:</label> + <input id="id_array_0" name="array_0" type="text" required> + <input id="id_array_1" name="array_1" type="text" required> + <input id="id_array_2" name="array_2" type="text" required> + </div> """, ) diff --git a/tests/postgres_tests/test_ranges.py b/tests/postgres_tests/test_ranges.py index 1b155ed51a..7f8fc6bb8c 100644 --- a/tests/postgres_tests/test_ranges.py +++ b/tests/postgres_tests/test_ranges.py @@ -687,17 +687,15 @@ class TestFormField(PostgreSQLSimpleTestCase): self.assertHTMLEqual( str(form), """ - <tr> - <th> - <label>Field:</label> - </th> - <td> + <div> + <fieldset> + <legend>Field:</legend> <input id="id_field_0_0" name="field_0_0" type="text"> <input id="id_field_0_1" name="field_0_1" type="text"> <input id="id_field_1_0" name="field_1_0" type="text"> <input id="id_field_1_1" name="field_1_1" type="text"> - </td> - </tr> + </fieldset> + </div> """, ) form = SplitForm( @@ -788,13 +786,13 @@ class TestFormField(PostgreSQLSimpleTestCase): self.assertHTMLEqual( str(RangeForm()), """ - <tr> - <th><label>Ints:</label></th> - <td> + <div> + <fieldset> + <legend>Ints:</legend> <input id="id_ints_0" name="ints_0" type="number"> <input id="id_ints_1" name="ints_1" type="number"> - </td> - </tr> + </fieldset> + </div> """, ) diff --git a/tests/runtests.py b/tests/runtests.py index e3a60d777b..e5adb902c3 100755 --- a/tests/runtests.py +++ b/tests/runtests.py @@ -243,6 +243,9 @@ def setup_collect_tests(start_at, start_after, test_labels=None): "fields.W342", # ForeignKey(unique=True) -> OneToOneField ] + # RemovedInDjango50Warning + settings.FORM_RENDERER = "django.forms.renderers.DjangoDivFormRenderer" + # Load all the ALWAYS_INSTALLED_APPS. django.setup() |
