diff --git a/tests/regressiontests/forms/tests/formsets.py b/tests/regressiontests/forms/tests/formsets.py index 4050231844ff6..cbff56f55eb53 100644 --- a/tests/regressiontests/forms/tests/formsets.py +++ b/tests/regressiontests/forms/tests/formsets.py @@ -29,6 +29,11 @@ def clean(self): seen_drinks.append(drink['name']) +class EmptyFsetWontValidate(BaseFormSet): + def clean(self): + raise ValidationError("Clean method called") + + # Let's define a FormSet that takes a list of favorite drinks, but raises an # error if there are any duplicates. Used in ``test_clean_hook``, # ``test_regression_6926`` & ``test_regression_12878``. @@ -872,3 +877,13 @@ def test_form_errors_are_cought_by_formset(self): formset = ArticleFormSet(data) self.assertFalse(formset.is_valid()) self.assertEquals([{}, {'pub_date': [u'This field is required.']}], formset.errors) + +class TestEmptyFormSet(TestCase): + "Test that an empty formset still calls clean()" + def test_empty_formset_is_valid(self): + EmptyFsetWontValidateFormset = formset_factory(FavoriteDrinkForm, extra=0, formset=EmptyFsetWontValidate) + formset = EmptyFsetWontValidateFormset(data={'form-INITIAL_FORMS':'0', 'form-TOTAL_FORMS':'0'},prefix="form") + formset2 = EmptyFsetWontValidateFormset(data={'form-INITIAL_FORMS':'0', 'form-TOTAL_FORMS':'1', 'form-0-name':'bah' },prefix="form") + self.assertFalse(formset.is_valid()) + self.assertFalse(formset2.is_valid()) +