summaryrefslogtreecommitdiff
path: root/tests/forms_tests
diff options
context:
space:
mode:
authorCarlton Gibson <carlton.gibson@noumenal.es>2022-04-26 16:01:59 +0200
committerCarlton Gibson <carlton.gibson@noumenal.es>2022-04-27 10:21:04 +0200
commit476d4d508717977101bba1a7f765653e48e88e76 (patch)
tree239da180ce3d0586406d3d1b36b5657bd40447a5 /tests/forms_tests
parent832096478cf37b911688d061281348f74bf09e93 (diff)
downloaddjango-476d4d508717977101bba1a7f765653e48e88e76.tar.gz
Refs #32339 -- Allowed renderer to specify default form and formset templates.
Co-authored-by: David Smith <smithdc@gmail.com>
Diffstat (limited to 'tests/forms_tests')
-rw-r--r--tests/forms_tests/tests/test_forms.py19
-rw-r--r--tests/forms_tests/tests/test_formsets.py21
2 files changed, 38 insertions, 2 deletions
diff --git a/tests/forms_tests/tests/test_forms.py b/tests/forms_tests/tests/test_forms.py
index c5376b115f..ad8f7b9a31 100644
--- a/tests/forms_tests/tests/test_forms.py
+++ b/tests/forms_tests/tests/test_forms.py
@@ -4397,7 +4397,7 @@ class Jinja2FormsTestCase(FormsTestCase):
class CustomRenderer(DjangoTemplates):
- pass
+ form_template_name = "forms_tests/form_snippet.html"
class RendererTests(SimpleTestCase):
@@ -4813,7 +4813,22 @@ class TemplateTests(SimpleTestCase):
class OverrideTests(SimpleTestCase):
- def test_use_custom_template(self):
+ @override_settings(FORM_RENDERER="forms_tests.tests.test_forms.CustomRenderer")
+ def test_custom_renderer_template_name(self):
+ class Person(Form):
+ first_name = CharField()
+
+ get_default_renderer.cache_clear()
+ t = Template("{{ form }}")
+ html = t.render(Context({"form": Person()}))
+ expected = """
+ <div class="fieldWrapper"><label for="id_first_name">First name:</label>
+ <input type="text" name="first_name" required id="id_first_name"></div>
+ """
+ self.assertHTMLEqual(html, expected)
+ get_default_renderer.cache_clear()
+
+ def test_per_form_template_name(self):
class Person(Form):
first_name = CharField()
template_name = "forms_tests/form_snippet.html"
diff --git a/tests/forms_tests/tests/test_formsets.py b/tests/forms_tests/tests/test_formsets.py
index 87084102a5..afa7a8a33d 100644
--- a/tests/forms_tests/tests/test_formsets.py
+++ b/tests/forms_tests/tests/test_formsets.py
@@ -23,6 +23,7 @@ from django.forms.formsets import (
all_valid,
formset_factory,
)
+from django.forms.renderers import TemplatesSetting
from django.forms.utils import ErrorList
from django.forms.widgets import HiddenInput
from django.test import SimpleTestCase
@@ -1435,6 +1436,26 @@ class FormsFormsetTestCase(SimpleTestCase):
self.assertIs(formset._should_delete_form(formset.forms[1]), False)
self.assertIs(formset._should_delete_form(formset.forms[2]), False)
+ def test_template_name_uses_renderer_value(self):
+ class CustomRenderer(TemplatesSetting):
+ formset_template_name = "a/custom/formset/template.html"
+
+ ChoiceFormSet = formset_factory(Choice, renderer=CustomRenderer)
+
+ self.assertEqual(
+ ChoiceFormSet().template_name, "a/custom/formset/template.html"
+ )
+
+ def test_template_name_can_be_overridden(self):
+ class CustomFormSet(BaseFormSet):
+ template_name = "a/custom/formset/template.html"
+
+ ChoiceFormSet = formset_factory(Choice, formset=CustomFormSet)
+
+ self.assertEqual(
+ ChoiceFormSet().template_name, "a/custom/formset/template.html"
+ )
+
def test_custom_renderer(self):
"""
A custom renderer passed to a formset_factory() is passed to all forms