From 87c5e7efebd040aef0f0479ccf86877155bb5cea Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Fri, 30 Sep 2016 14:49:50 -0400 Subject: Refs #27186 -- Fixed model form default fallback for CheckboxSelectMultiple. --- .../widget_tests/test_checkboxselectmultiple.py | 5 +++++ tests/model_forms/tests.py | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py index 2d73f2b589..27e870559d 100644 --- a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py +++ b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py @@ -120,3 +120,8 @@ class CheckboxSelectMultipleTest(WidgetTest): self.assertIs(widget.use_required_attribute(None), False) self.assertIs(widget.use_required_attribute([]), False) self.assertIs(widget.use_required_attribute(['J', 'P']), False) + + def test_value_omitted_from_data(self): + widget = self.widget(choices=self.beatles) + self.assertIs(widget.value_omitted_from_data({}, {}, 'field'), False) + self.assertIs(widget.value_omitted_from_data({'field': 'value'}, {}, 'field'), False) diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py index de7c36271f..53e70c6ae9 100644 --- a/tests/model_forms/tests.py +++ b/tests/model_forms/tests.py @@ -601,6 +601,22 @@ class ModelFormBaseTest(TestCase): self.assertIsInstance(mf1.fields['active'].widget, forms.CheckboxInput) self.assertIs(m1._meta.get_field('active').get_default(), True) + def test_default_not_populated_on_checkboxselectmultiple(self): + class PubForm(forms.ModelForm): + mode = forms.CharField(required=False, widget=forms.CheckboxSelectMultiple) + + class Meta: + model = PublicationDefaults + fields = ('mode',) + + # Empty data doesn't use the model default because an unchecked + # CheckboxSelectMultiple doesn't have a value in HTML form submission. + mf1 = PubForm({}) + self.assertEqual(mf1.errors, {}) + m1 = mf1.save(commit=False) + self.assertEqual(m1.mode, '') + self.assertEqual(m1._meta.get_field('mode').get_default(), 'di') + def test_prefixed_form_with_default_field(self): class PubForm(forms.ModelForm): prefix = 'form-prefix' @@ -651,7 +667,7 @@ class ModelFormBaseTest(TestCase): m2 = mf2.save(commit=False) self.assertEqual(m2.file.name, 'name') - def test_selectdatewidget(self): + def test_default_selectdatewidget(self): class PubForm(forms.ModelForm): date_published = forms.DateField(required=False, widget=forms.SelectDateWidget) -- cgit v1.3