diff options
author | Carlton Gibson <carlton.gibson@noumenal.es> | 2022-04-26 16:01:59 +0200 |
---|---|---|
committer | Carlton Gibson <carlton.gibson@noumenal.es> | 2022-04-27 10:21:04 +0200 |
commit | 476d4d508717977101bba1a7f765653e48e88e76 (patch) | |
tree | 239da180ce3d0586406d3d1b36b5657bd40447a5 /tests/forms_tests | |
parent | 832096478cf37b911688d061281348f74bf09e93 (diff) | |
download | django-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.py | 19 | ||||
-rw-r--r-- | tests/forms_tests/tests/test_formsets.py | 21 |
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 |