summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2011-08-22 00:48:53 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2011-08-22 00:48:53 +0000
commitc471d471bf9cb4f8da1fad78c5037660186ba6fd (patch)
tree0df66459b6242b06efc074b442e75f280a660980 /tests
parentd661cc5e3ab2d8dc427760bb4193603f48512ad8 (diff)
Improved error message display during validation errors.
When reporting a validation error (during model validation or fixture loading, for example), the error messages now report the bad value as well as the expected type. This can make identifying the offending field and problem a bit easier. Fixed #11595. Patch from raulcd and wildfire with supervision from Russell. git-svn-id: http://code.djangoproject.com/svn/django/trunk@16638 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/modeltests/validation/test_error_messages.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/modeltests/validation/test_error_messages.py b/tests/modeltests/validation/test_error_messages.py
new file mode 100644
index 0000000000..45d03277f4
--- /dev/null
+++ b/tests/modeltests/validation/test_error_messages.py
@@ -0,0 +1,57 @@
+from django.core.exceptions import ValidationError
+from django.utils.unittest import TestCase
+from django.db import models
+
+
+class ValidationMessagesTest(TestCase):
+
+ def test_autofield_field_raises_error_message(self):
+ f = models.AutoField(primary_key=True)
+ self.assertRaises(ValidationError, f.clean, 'foo', None)
+ try:
+ f.clean('foo', None)
+ except ValidationError, e:
+ self.assertEqual(e.messages, [u"'foo' value must be an integer."])
+
+ def test_integer_field_raises_error_message(self):
+ f = models.IntegerField()
+ self.assertRaises(ValidationError, f.clean, 'foo', None)
+ try:
+ f.clean('foo', None)
+ except ValidationError, e:
+ self.assertEqual(e.messages, [u"'foo' value must be an integer."])
+
+ def test_boolean_field_raises_error_message(self):
+ f = models.BooleanField()
+ self.assertRaises(ValidationError, f.clean, 'foo', None)
+ try:
+ f.clean('foo', None)
+ except ValidationError, e:
+ self.assertEqual(e.messages,
+ [u"'foo' value must be either True or False."])
+
+ def test_float_field_raises_error_message(self):
+ f = models.FloatField()
+ self.assertRaises(ValidationError, f.clean, 'foo', None)
+ try:
+ f.clean('foo', None)
+ except ValidationError, e:
+ self.assertEqual(e.messages, [u"'foo' value must be a float."])
+
+ def test_decimal_field_raises_error_message(self):
+ f = models.DecimalField()
+ self.assertRaises(ValidationError, f.clean, 'foo', None)
+ try:
+ f.clean('foo', None)
+ except ValidationError, e:
+ self.assertEqual(e.messages,
+ [u"'foo' value must be a decimal number."])
+
+ def test_null_boolean_field_raises_error_message(self):
+ f = models.NullBooleanField()
+ self.assertRaises(ValidationError, f.clean, 'foo', None)
+ try:
+ f.clean('foo', None)
+ except ValidationError, e:
+ self.assertEqual(e.messages,
+ [u"'foo' value must be either None, True or False."])