diff --git a/tests/regressiontests/forms/localflavor/cl.py b/tests/regressiontests/forms/localflavor/cl.py index 23e7a41902..15b8c7b285 100644 --- a/tests/regressiontests/forms/localflavor/cl.py +++ b/tests/regressiontests/forms/localflavor/cl.py @@ -1,74 +1,56 @@ +from django.contrib.localflavor.cl.forms import CLRutField, CLRegionSelect +from django.core.exceptions import ValidationError -# Tests for the contrib/localflavor/ CL form fields. +from utils import LocalFlavorTestCase -tests = r""" -## CLRutField ############################################################# -CLRutField is a Field that checks the validity of the Chilean -personal identification number (RUT). It has two modes relaxed (default) and -strict. +class CLLocalFlavorTests(LocalFlavorTestCase): + def test_CLRegionSelect(self): + f = CLRegionSelect() + out = u'''''' + self.assertEqual(f.render('foo', 'bar'), out) ->>> from django.contrib.localflavor.cl.forms import CLRutField ->>> rut = CLRutField() + def test_CLRutField(self): + error_invalid = [u'The Chilean RUT is not valid.'] + error_format = [u'Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.'] + valid = { + '11-6': '11-6', + '116': '11-6', + '767484100': '76.748.410-0', + '78.412.790-7': '78.412.790-7', + '8.334.6043': '8.334.604-3', + '76793310-K': '76.793.310-K', + } + invalid = { + '11.111.111-0': error_invalid, + '111': error_invalid, + } + self.assertFieldOutput(CLRutField, valid, invalid) ->>> rut.clean('11-6') -u'11-6' ->>> rut.clean('116') -u'11-6' - -# valid format, bad verifier. ->>> rut.clean('11.111.111-0') -Traceback (most recent call last): -... -ValidationError: [u'The Chilean RUT is not valid.'] ->>> rut.clean('111') -Traceback (most recent call last): -... -ValidationError: [u'The Chilean RUT is not valid.'] - ->>> rut.clean('767484100') -u'76.748.410-0' ->>> rut.clean('78.412.790-7') -u'78.412.790-7' ->>> rut.clean('8.334.6043') -u'8.334.604-3' ->>> rut.clean('76793310-K') -u'76.793.310-K' - -Strict RUT usage (does not allow imposible values) ->>> rut = CLRutField(strict=True) - ->>> rut.clean('11-6') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.'] - -# valid format, bad verifier. ->>> rut.clean('11.111.111-0') -Traceback (most recent call last): -... -ValidationError: [u'The Chilean RUT is not valid.'] - -# Correct input, invalid format. ->>> rut.clean('767484100') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.'] ->>> rut.clean('78.412.790-7') -u'78.412.790-7' ->>> rut.clean('8.334.6043') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.'] ->>> rut.clean('76793310-K') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.'] - -## CLRegionSelect ######################################################### ->>> from django.contrib.localflavor.cl.forms import CLRegionSelect ->>> f = CLRegionSelect() - ->>> f.render('foo', 'bar') -u'' -""" + # deal with special "Strict Mode". + invalid = { + '11-6': error_format, + '767484100': error_format, + '8.334.6043': error_format, + '76793310-K': error_format, + '11.111.111-0': error_invalid + } + self.assertFieldOutput(CLRutField, + {}, invalid, field_kwargs={"strict": True} + ) diff --git a/tests/regressiontests/forms/localflavor/utils.py b/tests/regressiontests/forms/localflavor/utils.py index 3297d4e10c..df1c3c2de3 100644 --- a/tests/regressiontests/forms/localflavor/utils.py +++ b/tests/regressiontests/forms/localflavor/utils.py @@ -4,7 +4,8 @@ from django.utils.unittest import TestCase class LocalFlavorTestCase(TestCase): - def assertFieldOutput(self, fieldclass, valid, invalid): + def assertFieldOutput(self, fieldclass, valid, invalid, field_args=[], + field_kwargs={}, empty_value=u''): """Asserts that a field behaves correctly with various inputs. Args: @@ -13,10 +14,12 @@ class LocalFlavorTestCase(TestCase): cleaned values. invalid: a dictionary mapping invalid inputs to one or more raised error messages. + fieldargs: the args passed to instantiate the field + fieldkwargs: the kwargs passed to instantiate the field + emptyvalue: the expected clean output for inputs in EMPTY_VALUES """ - - required = fieldclass() - optional = fieldclass(required=False) + required = fieldclass(*field_args, **field_kwargs) + optional = fieldclass(*field_args, required=False, **field_kwargs) # test valid inputs for input, output in valid.items(): self.assertEqual(required.clean(input), output) @@ -33,6 +36,5 @@ class LocalFlavorTestCase(TestCase): 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'') + required.clean, e) + self.assertEqual(optional.clean(e), empty_value) diff --git a/tests/regressiontests/forms/localflavortests.py b/tests/regressiontests/forms/localflavortests.py index 7818025ae2..143ada1981 100644 --- a/tests/regressiontests/forms/localflavortests.py +++ b/tests/regressiontests/forms/localflavortests.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from localflavor.cl import tests as localflavor_cl_tests from localflavor.cz import tests as localflavor_cz_tests from localflavor.es import tests as localflavor_es_tests from localflavor.fi import tests as localflavor_fi_tests @@ -30,12 +29,12 @@ from localflavor.be import BELocalFlavorTests from localflavor.br import BRLocalFlavorTests from localflavor.ca import CALocalFlavorTests from localflavor.ch import CHLocalFlavorTests +from localflavor.cl import CLLocalFlavorTests from localflavor.il import ILLocalFlavorTests from localflavor.tr import TRLocalFlavorTests __test__ = { - 'localflavor_cl_tests': localflavor_cl_tests, 'localflavor_cz_tests': localflavor_cz_tests, 'localflavor_es_tests': localflavor_es_tests, 'localflavor_fi_tests': localflavor_fi_tests, diff --git a/tests/regressiontests/forms/tests/__init__.py b/tests/regressiontests/forms/tests/__init__.py index c5fc92c85b..ea2f098ba8 100644 --- a/tests/regressiontests/forms/tests/__init__.py +++ b/tests/regressiontests/forms/tests/__init__.py @@ -20,6 +20,7 @@ from regressiontests.forms.localflavortests import ( BRLocalFlavorTests, CALocalFlavorTests, CHLocalFlavorTests, + CLLocalFlavorTests, DELocalFlavorTests, ILLocalFlavorTests, TRLocalFlavorTests,