From d126eba3637d84caa80fa4258e2e59ef07a8260c Mon Sep 17 00:00:00 2001 From: David Smith Date: Thu, 5 May 2022 14:26:09 +0200 Subject: Refs #32339 -- Deprecated default.html form template. Co-authored-by: Carlton Gibson --- tests/forms_tests/tests/__init__.py | 4 +- tests/forms_tests/tests/test_forms.py | 99 +++++++++++++++--------------- tests/forms_tests/tests/test_formsets.py | 100 +++++++++++++++++-------------- 3 files changed, 110 insertions(+), 93 deletions(-) (limited to 'tests/forms_tests') 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), - """ - - - - - - - """, + '
' + '
' + '
', ) self.assertHTMLEqual( p.as_div(), @@ -182,15 +178,15 @@ class FormsTestCase(SimpleTestCase): self.assertEqual(p.cleaned_data, {}) self.assertHTMLEqual( str(p), - """ - - - - - - - -""", + '
' + '
  • This field is required.
' + '
' + '
' + '
  • This field is required.
' + '
' + '' + '
  • This field is required.
' + '
', ) self.assertHTMLEqual( p.as_table(), @@ -261,12 +257,12 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( str(p), - """ - - - - -""", + '
", ) self.assertHTMLEqual( p.as_table(), @@ -4932,9 +4928,7 @@ class TemplateTests(SimpleTestCase): t = Template( '
' - "" "{{ form }}" - "
" '' "
" ) @@ -4944,14 +4938,12 @@ class TemplateTests(SimpleTestCase): self.assertHTMLEqual( my_function("GET", {}), '
' - "" - "' - "' - "' - "
Username:" - '
Password1:" - '
Password2:" - '
" + "
Username:" + '
' + "
Password1:" + '
' + "
Password2:" + '
' '' "
", ) @@ -4966,18 +4958,16 @@ class TemplateTests(SimpleTestCase): }, ), '
' - "" - '" - '' - "' - "' - "
    ' - "
  • Please make sure your passwords match.
Username:
    ' + '
      ' + "
    • Please make sure your passwords match.
    " + '
    Username:
      ' "
    • Ensure this value has at most 10 characters (it has 23).
    " '
Password1:" - '
Password2:" - '
" + 'value="this-is-a-long-username" maxlength="10" required>' + "
Password1:" + '
' + "
Password2:" + '
' '' "
", ) @@ -5054,7 +5044,7 @@ class OverrideTests(SimpleTestCase): f = FirstNameForm() try: - self.assertInHTML("1", f.render()) + f.render() except RecursionError: self.fail("Cyclic reference in BoundField.render().") @@ -5069,3 +5059,16 @@ class OverrideTests(SimpleTestCase): '' 'Language:', ) + + +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): -Choice: -Votes:""", +
Choice:
+
Votes:
""", ) # 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), - """ - - - - -""", + """
+
+
+
+
+
""", ) # 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), - """ - - -""", + """
+
+
+
""", ) 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), - """ -""", + """
+
""", ) 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), """ - - - - +
+
+
+
""", ) @@ -1056,12 +1058,12 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( "\n".join(str(form) for form in formset.forms), """ - - - - +
+
+
+
""", ) @@ -1082,18 +1084,15 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( "\n".join(str(form) for form in formset.forms), """ - - +
- - - +
+
- - + value="Bloody Mary">
+
+ value="Jack and Coke">
""", ) @@ -1173,12 +1172,11 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( "\n".join(str(form) for form in formset.forms), """ - - +
- - - """, +
+
+
""", ) def test_management_form_field_names(self): @@ -1701,16 +1699,16 @@ class TestIsBoundBehavior(SimpleTestCase): # Can still render the formset. self.assertHTMLEqual( str(formset), - '' '" + "
" '' '' '' '' - "\n", + "
\n", ) def test_management_form_invalid_data(self): @@ -1732,18 +1730,18 @@ class TestIsBoundBehavior(SimpleTestCase): # Can still render the formset. self.assertHTMLEqual( str(formset), - '' '" + "
" '' '' '' '' - "\n", + "
\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) -- cgit v1.3