summaryrefslogtreecommitdiff
path: root/tests/regressiontests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/regressiontests')
-rw-r--r--tests/regressiontests/forms/tests.py1
-rw-r--r--tests/regressiontests/forms/validators.py34
2 files changed, 35 insertions, 0 deletions
diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py
index c6881daff4..ef7326735d 100644
--- a/tests/regressiontests/forms/tests.py
+++ b/tests/regressiontests/forms/tests.py
@@ -32,6 +32,7 @@ from formsets import tests as formset_tests
from media import media_tests
from fields import TestFields
+from validators import TestFormWithValidators, TestFieldWithValidators
__test__ = {
'extra_tests': extra_tests,
diff --git a/tests/regressiontests/forms/validators.py b/tests/regressiontests/forms/validators.py
new file mode 100644
index 0000000000..becf4e2825
--- /dev/null
+++ b/tests/regressiontests/forms/validators.py
@@ -0,0 +1,34 @@
+from unittest import TestCase
+
+from django import forms
+from django.core import validators
+from django.core.exceptions import ValidationError
+
+class AlwaysFailingValidator(validators.ComplexValidator):
+ def __call__(self, value, all_values={}, obj=None):
+ raise ValidationError('AlwaysFailingValidator')
+
+class TestFieldWithValidators(TestCase):
+ def test_all_errors_get_reported(self):
+ field = forms.CharField(
+ validators=[validators.validate_integer, validators.validate_email,]
+ )
+ self.assertRaises(ValidationError, field.clean, 'not int nor mail')
+ try:
+ field.clean('not int nor mail')
+ except ValidationError, e:
+ self.assertEqual(2, len(e.messages))
+
+class TestFormWithValidators(TestCase):
+ def test_all_complex_validators_get_run_even_if_they_fail(self):
+ class MyForm(forms.Form):
+ validator_field = forms.CharField(
+ validators=[
+ AlwaysFailingValidator(),
+ AlwaysFailingValidator(),
+ ]
+ )
+ form = MyForm({'validator_field': 'some value'})
+ self.assertFalse(form.is_valid())
+ self.assertEqual(['validator_field'], form.errors.keys())
+ self.assertEqual(['AlwaysFailingValidator', 'AlwaysFailingValidator'], form.errors['validator_field'])