From 476d4d508717977101bba1a7f765653e48e88e76 Mon Sep 17 00:00:00 2001 From: Carlton Gibson Date: Tue, 26 Apr 2022 16:01:59 +0200 Subject: Refs #32339 -- Allowed renderer to specify default form and formset templates. Co-authored-by: David Smith --- tests/forms_tests/tests/test_forms.py | 19 +++++++++++++++++-- tests/forms_tests/tests/test_formsets.py | 21 +++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) (limited to 'tests/forms_tests') 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 = """ +
+
+ """ + 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 -- cgit v1.3