Fixed #17499 -- Ensured assertFieldOutput works for fields that customize the "required" error message. Thanks dpifke for the report and patch, and claudep for the tests.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17345 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Aymeric Augustin 2012-01-07 10:26:29 +00:00
parent 4629668ffa
commit 56b37bf1cf
2 changed files with 9 additions and 3 deletions

View File

@ -31,7 +31,7 @@ from django.test.client import Client
from django.test.utils import (get_warnings_state, restore_warnings_state, from django.test.utils import (get_warnings_state, restore_warnings_state,
override_settings) override_settings)
from django.utils import simplejson, unittest as ut2 from django.utils import simplejson, unittest as ut2
from django.utils.encoding import smart_str from django.utils.encoding import smart_str, force_unicode
from django.views.static import serve from django.views.static import serve
__all__ = ('DocTestRunner', 'OutputChecker', 'TestCase', 'TransactionTestCase', __all__ = ('DocTestRunner', 'OutputChecker', 'TestCase', 'TransactionTestCase',
@ -335,7 +335,7 @@ class SimpleTestCase(ut2.TestCase):
optional.clean(input) optional.clean(input)
self.assertEqual(context_manager.exception.messages, errors) self.assertEqual(context_manager.exception.messages, errors)
# test required inputs # test required inputs
error_required = [u'This field is required.'] error_required = [force_unicode(required.error_messages['required'])]
for e in EMPTY_VALUES: for e in EMPTY_VALUES:
with self.assertRaises(ValidationError) as context_manager: with self.assertRaises(ValidationError) as context_manager:
required.clean(e) required.clean(e)

View File

@ -1,6 +1,6 @@
from __future__ import with_statement, absolute_import from __future__ import with_statement, absolute_import
from django.forms import EmailField from django.forms import EmailField, IntegerField
from django.test import SimpleTestCase, TestCase, skipUnlessDBFeature from django.test import SimpleTestCase, TestCase, skipUnlessDBFeature
from django.utils.unittest import skip from django.utils.unittest import skip
@ -149,6 +149,12 @@ class AssertFieldOutputTests(SimpleTestCase):
self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'Wrong output'}, {'aaa': error_invalid}) self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'Wrong output'}, {'aaa': error_invalid})
self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'a@a.com'}, {'aaa': [u'Come on, gimme some well formatted data, dude.']}) self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'a@a.com'}, {'aaa': [u'Come on, gimme some well formatted data, dude.']})
def test_custom_required_message(self):
class MyCustomField(IntegerField):
default_error_messages = {
'required': u'This is really required.',
}
self.assertFieldOutput(MyCustomField, {}, {}, empty_value=None)
__test__ = {"API_TEST": r""" __test__ = {"API_TEST": r"""
# Some checks of the doctest output normalizer. # Some checks of the doctest output normalizer.