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,