39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
|
from django.core.exceptions import ValidationError
|
||
|
from django.core.validators import EMPTY_VALUES
|
||
|
from django.utils.unittest import TestCase
|
||
|
|
||
|
|
||
|
class LocalFlavorTestCase(TestCase):
|
||
|
def assertFieldOutput(self, fieldclass, valid, invalid):
|
||
|
"""Asserts that a field behaves correctly with various inputs.
|
||
|
|
||
|
Args:
|
||
|
fieldclass: the class of the field to be tested.
|
||
|
valid: a dictionary mapping valid inputs to their expected
|
||
|
cleaned values.
|
||
|
invalid: a dictionary mapping invalid inputs to one or more
|
||
|
raised error messages.
|
||
|
"""
|
||
|
|
||
|
required = fieldclass()
|
||
|
optional = fieldclass(required=False)
|
||
|
# test valid inputs
|
||
|
for input, output in valid.items():
|
||
|
self.assertEqual(required.clean(input), output)
|
||
|
self.assertEqual(optional.clean(input), output)
|
||
|
# test invalid inputs
|
||
|
for input, errors in invalid.items():
|
||
|
self.assertRaisesRegexp(ValidationError, unicode(errors),
|
||
|
required.clean, input
|
||
|
)
|
||
|
self.assertRaisesRegexp(ValidationError, unicode(errors),
|
||
|
optional.clean, input
|
||
|
)
|
||
|
# test required inputs
|
||
|
error_required = u'This field is required'
|
||
|
for e in EMPTY_VALUES:
|
||
|
self.assertRaisesRegexp(ValidationError, error_required,
|
||
|
required.clean, e
|
||
|
)
|
||
|
self.assertEqual(optional.clean(e), u'')
|