Commit cc8c3ebb authored by Alex Gaynor's avatar Alex Gaynor
Browse files

Converted Chilean localflavor doctests to unittests. We have always been at...

Converted Chilean localflavor doctests to unittests.  We have always been at war with doctests.  Thanks to Idan Gazit.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14936 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 7fdfec7a
Loading
Loading
Loading
Loading
+56 −74
Original line number Diff line number Diff line

# Tests for the contrib/localflavor/ CL form fields.

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.

>>> from django.contrib.localflavor.cl.forms import CLRutField
>>> rut = CLRutField()

>>> 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'<select name="foo">\n<option value="RM">Regi\xf3n Metropolitana de Santiago</option>\n<option value="I">Regi\xf3n de Tarapac\xe1</option>\n<option value="II">Regi\xf3n de Antofagasta</option>\n<option value="III">Regi\xf3n de Atacama</option>\n<option value="IV">Regi\xf3n de Coquimbo</option>\n<option value="V">Regi\xf3n de Valpara\xedso</option>\n<option value="VI">Regi\xf3n del Libertador Bernardo O&#39;Higgins</option>\n<option value="VII">Regi\xf3n del Maule</option>\n<option value="VIII">Regi\xf3n del B\xedo B\xedo</option>\n<option value="IX">Regi\xf3n de la Araucan\xeda</option>\n<option value="X">Regi\xf3n de los Lagos</option>\n<option value="XI">Regi\xf3n de Ays\xe9n del General Carlos Ib\xe1\xf1ez del Campo</option>\n<option value="XII">Regi\xf3n de Magallanes y la Ant\xe1rtica Chilena</option>\n<option value="XIV">Regi\xf3n de Los R\xedos</option>\n<option value="XV">Regi\xf3n de Arica-Parinacota</option>\n</select>'
"""
from django.contrib.localflavor.cl.forms import CLRutField, CLRegionSelect
from django.core.exceptions import ValidationError

from utils import LocalFlavorTestCase


class CLLocalFlavorTests(LocalFlavorTestCase):
    def test_CLRegionSelect(self):
        f = CLRegionSelect()
        out = u'''<select name="foo">
<option value="RM">Regi\xf3n Metropolitana de Santiago</option>
<option value="I">Regi\xf3n de Tarapac\xe1</option>
<option value="II">Regi\xf3n de Antofagasta</option>
<option value="III">Regi\xf3n de Atacama</option>
<option value="IV">Regi\xf3n de Coquimbo</option>
<option value="V">Regi\xf3n de Valpara\xedso</option>
<option value="VI">Regi\xf3n del Libertador Bernardo O&#39;Higgins</option>
<option value="VII">Regi\xf3n del Maule</option>
<option value="VIII">Regi\xf3n del B\xedo B\xedo</option>
<option value="IX">Regi\xf3n de la Araucan\xeda</option>
<option value="X">Regi\xf3n de los Lagos</option>
<option value="XI">Regi\xf3n de Ays\xe9n del General Carlos Ib\xe1\xf1ez del Campo</option>
<option value="XII">Regi\xf3n de Magallanes y la Ant\xe1rtica Chilena</option>
<option value="XIV">Regi\xf3n de Los R\xedos</option>
<option value="XV">Regi\xf3n de Arica-Parinacota</option>
</select>'''
        self.assertEqual(f.render('foo', 'bar'), out)

    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)

        # 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}
        )
+9 −7
Original line number Diff line number Diff line
@@ -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)
+1 −2
Original line number Diff line number Diff line
# -*- 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,
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ from regressiontests.forms.localflavortests import (
    BRLocalFlavorTests,
    CALocalFlavorTests,
    CHLocalFlavorTests,
    CLLocalFlavorTests,
    DELocalFlavorTests,
    ILLocalFlavorTests,
    TRLocalFlavorTests,