diff options
| author | Christopher Cave-Ayland <c.cave-ayland@imperial.ac.uk> | 2023-06-01 13:26:56 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-07-24 09:09:53 +0200 |
| commit | 95e4d6b81312fdd9f8ebf3385be1c1331168b5cf (patch) | |
| tree | 028600422e4c5f72fcce712aa5dd6a7f70118de3 /tests/forms_tests | |
| parent | b9473cac65190822e7c94f695f1f7b4d5b49502a (diff) | |
Fixed #34532 -- Made formset_factory() respect Form's default_renderer.
Co-authored-by: David Smith <smithdc@gmail.com>
Diffstat (limited to 'tests/forms_tests')
| -rw-r--r-- | tests/forms_tests/tests/test_formsets.py | 60 |
1 files changed, 59 insertions, 1 deletions
diff --git a/tests/forms_tests/tests/test_formsets.py b/tests/forms_tests/tests/test_formsets.py index ee0ae5a426..3c260010c2 100644 --- a/tests/forms_tests/tests/test_formsets.py +++ b/tests/forms_tests/tests/test_formsets.py @@ -23,7 +23,11 @@ from django.forms.formsets import ( all_valid, formset_factory, ) -from django.forms.renderers import TemplatesSetting +from django.forms.renderers import ( + DjangoTemplates, + TemplatesSetting, + get_default_renderer, +) from django.forms.utils import ErrorList from django.forms.widgets import HiddenInput from django.test import SimpleTestCase @@ -1553,6 +1557,60 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertEqual(formset.non_form_errors().renderer, renderer) self.assertEqual(formset.empty_form.renderer, renderer) + def test_form_default_renderer(self): + """ + In the absence of a renderer passed to the formset_factory(), + Form.default_renderer is respected. + """ + + class CustomRenderer(DjangoTemplates): + pass + + class ChoiceWithDefaultRenderer(Choice): + default_renderer = CustomRenderer() + + data = { + "choices-TOTAL_FORMS": "1", + "choices-INITIAL_FORMS": "0", + "choices-MIN_NUM_FORMS": "0", + } + + ChoiceFormSet = formset_factory(ChoiceWithDefaultRenderer) + formset = ChoiceFormSet(data, prefix="choices") + self.assertEqual( + formset.forms[0].renderer, ChoiceWithDefaultRenderer.default_renderer + ) + self.assertEqual( + formset.empty_form.renderer, ChoiceWithDefaultRenderer.default_renderer + ) + default_renderer = get_default_renderer() + self.assertIsInstance(formset.renderer, type(default_renderer)) + + def test_form_default_renderer_class(self): + """ + In the absence of a renderer passed to the formset_factory(), + Form.default_renderer is respected. + """ + + class CustomRenderer(DjangoTemplates): + pass + + class ChoiceWithDefaultRenderer(Choice): + default_renderer = CustomRenderer + + data = { + "choices-TOTAL_FORMS": "1", + "choices-INITIAL_FORMS": "0", + "choices-MIN_NUM_FORMS": "0", + } + + ChoiceFormSet = formset_factory(ChoiceWithDefaultRenderer) + formset = ChoiceFormSet(data, prefix="choices") + self.assertIsInstance(formset.forms[0].renderer, CustomRenderer) + self.assertIsInstance(formset.empty_form.renderer, CustomRenderer) + default_renderer = get_default_renderer() + self.assertIsInstance(formset.renderer, type(default_renderer)) + def test_repr(self): valid_formset = self.make_choiceformset([("test", 1)]) valid_formset.full_clean() |
