diff options
| author | David Smith <smithdc@gmail.com> | 2020-02-13 22:12:46 +0000 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-03-24 20:05:18 +0100 |
| commit | 27746ab28ac88fc213456e63302b408312d95122 (patch) | |
| tree | a1a1946d190833610bce0c5e2dd1b721972bbb0e /tests/forms_tests/widget_tests/test_multiwidget.py | |
| parent | 8fe2447a01232d9598bf4692d1face12fa074288 (diff) | |
Fixed #7664 -- Allowed customizing suffixes of MultiWidget.widgets' names.
Diffstat (limited to 'tests/forms_tests/widget_tests/test_multiwidget.py')
| -rw-r--r-- | tests/forms_tests/widget_tests/test_multiwidget.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/forms_tests/widget_tests/test_multiwidget.py b/tests/forms_tests/widget_tests/test_multiwidget.py index 783eb78b85..0e5ee8f73f 100644 --- a/tests/forms_tests/widget_tests/test_multiwidget.py +++ b/tests/forms_tests/widget_tests/test_multiwidget.py @@ -79,6 +79,19 @@ class DeepCopyWidget(MultiWidget): class MultiWidgetTest(WidgetTest): + def test_subwidgets_name(self): + widget = MultiWidget( + widgets={ + '': TextInput(), + 'big': TextInput(attrs={'class': 'big'}), + 'small': TextInput(attrs={'class': 'small'}), + }, + ) + self.check_html(widget, 'name', ['John', 'George', 'Paul'], html=( + '<input type="text" name="name" value="John">' + '<input type="text" name="name_big" value="George" class="big">' + '<input type="text" name="name_small" value="Paul" class="small">' + )) def test_text_inputs(self): widget = MyMultiWidget( @@ -133,6 +146,36 @@ class MultiWidgetTest(WidgetTest): self.assertIs(widget.value_omitted_from_data({'field_1': 'y'}, {}, 'field'), False) self.assertIs(widget.value_omitted_from_data({'field_0': 'x', 'field_1': 'y'}, {}, 'field'), False) + def test_value_from_datadict_subwidgets_name(self): + widget = MultiWidget(widgets={'x': TextInput(), '': TextInput()}) + tests = [ + ({}, [None, None]), + ({'field': 'x'}, [None, 'x']), + ({'field_x': 'y'}, ['y', None]), + ({'field': 'x', 'field_x': 'y'}, ['y', 'x']), + ] + for data, expected in tests: + with self.subTest(data): + self.assertEqual( + widget.value_from_datadict(data, {}, 'field'), + expected, + ) + + def test_value_omitted_from_data_subwidgets_name(self): + widget = MultiWidget(widgets={'x': TextInput(), '': TextInput()}) + tests = [ + ({}, True), + ({'field': 'x'}, False), + ({'field_x': 'y'}, False), + ({'field': 'x', 'field_x': 'y'}, False), + ] + for data, expected in tests: + with self.subTest(data): + self.assertIs( + widget.value_omitted_from_data(data, {}, 'field'), + expected, + ) + def test_needs_multipart_true(self): """ needs_multipart_form should be True if any widgets need it. |
