summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2020-07-27 12:34:23 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-07-27 13:03:19 +0200
commit013e06bb3795bcf840e29576fda7720e26cd7e01 (patch)
tree5a4e25c21d4e22153ec6a9f43c3e1ea2665796b8
parentcc3d24d7d577f174937a0744d886c4c7123cfa85 (diff)
Refs #31806 -- Added tests for including the value in some ValidationErrors.
-rw-r--r--tests/forms_tests/tests/test_validators.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/forms_tests/tests/test_validators.py b/tests/forms_tests/tests/test_validators.py
index c5e1f1e980..52adbe8c65 100644
--- a/tests/forms_tests/tests/test_validators.py
+++ b/tests/forms_tests/tests/test_validators.py
@@ -1,4 +1,5 @@
import re
+import types
from unittest import TestCase
from django import forms
@@ -62,3 +63,43 @@ class TestFieldWithValidators(TestCase):
form = UserForm({'full_name': 'not int nor mail'})
self.assertFalse(form.is_valid())
self.assertEqual(form.errors['full_name'], ['Enter a valid integer.', 'Enter a valid email address.'])
+
+
+class ValidatorCustomMessageTests(TestCase):
+ def test_value_placeholder_with_char_field(self):
+ cases = [
+ (validators.MaxLengthValidator(10), 11 * 'x', 'max_length'),
+ (validators.MinLengthValidator(10), 9 * 'x', 'min_length'),
+ ]
+ for validator, value, code in cases:
+ if isinstance(validator, types.FunctionType):
+ name = validator.__name__
+ else:
+ name = type(validator).__name__
+ with self.subTest(name, value=value):
+ class MyForm(forms.Form):
+ field = forms.CharField(
+ validators=[validator],
+ error_messages={code: '%(value)s'},
+ )
+
+ form = MyForm({'field': value})
+ self.assertIs(form.is_valid(), False)
+ self.assertEqual(form.errors, {'field': [value]})
+
+ def test_value_placeholder_with_integer_field(self):
+ cases = [
+ (validators.MaxValueValidator(0), 1, 'max_value'),
+ (validators.MinValueValidator(0), -1, 'min_value'),
+ ]
+ for validator, value, code in cases:
+ with self.subTest(type(validator).__name__, value=value):
+ class MyForm(forms.Form):
+ field = forms.IntegerField(
+ validators=[validator],
+ error_messages={code: '%(value)s'},
+ )
+
+ form = MyForm({'field': value})
+ self.assertIs(form.is_valid(), False)
+ self.assertEqual(form.errors, {'field': [str(value)]})