diff --git a/tests/regressiontests/forms/localflavor/es.py b/tests/regressiontests/forms/localflavor/es.py
index b92f62383d..b584075513 100644
--- a/tests/regressiontests/forms/localflavor/es.py
+++ b/tests/regressiontests/forms/localflavor/es.py
@@ -1,347 +1,172 @@
-# -*- coding: utf-8 -*-
-# Tests for the contrib/localflavor/ ES form fields.
+from django.contrib.localflavor.es.forms import (ESPostalCodeField, ESPhoneNumberField,
+ ESIdentityCardNumberField, ESCCCField, ESRegionSelect, ESProvinceSelect)
-tests = r"""
-# ESPostalCodeField ##############################################################
+from utils import LocalFlavorTestCase
-ESPostalCodeField validates that data is a five-digit spanish postal code.
->>> from django.contrib.localflavor.es.forms import ESPostalCodeField
->>> f = ESPostalCodeField()
->>> f.clean('08028')
-u'08028'
->>> f.clean('28080')
-u'28080'
->>> f.clean('53001')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('0801')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('080001')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('00999')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('08 01')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('08A01')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f = ESPostalCodeField(required=False)
->>> f.clean('08028')
-u'08028'
->>> f.clean('28080')
-u'28080'
->>> f.clean('53001')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('0801')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('080001')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('00999')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('08 01')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('08A01')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
->>> f.clean('')
-u''
+class ESLocalFlavorTests(LocalFlavorTestCase):
+ def test_ESRegionSelect(self):
+ f = ESRegionSelect()
+ out = u''''''
+ self.assertEqual(f.render('regions', 'CT'), out)
-# ESPhoneNumberField ##############################################################
+ def test_ESProvinceSelect(self):
+ f = ESProvinceSelect()
+ out = u''''''
+ self.assertEqual(f.render('provinces', '08'), out)
-ESPhoneNumberField validates that data is a nine-digit spanish phone number.
->>> from django.contrib.localflavor.es.forms import ESPhoneNumberField
->>> f = ESPhoneNumberField()
->>> f.clean('650010101')
-u'650010101'
->>> f.clean('931234567')
-u'931234567'
->>> f.clean('800123123')
-u'800123123'
->>> f.clean('555555555')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
->>> f.clean('789789789')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
->>> f.clean('99123123')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
->>> f.clean('9999123123')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
->>> f.clean('')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
+ def test_ESPostalCodeField(self):
+ error_invalid = [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
+ valid = {
+ '08028': '08028',
+ '28080': '28080',
+ }
+ invalid = {
+ '53001': error_invalid,
+ '0801': error_invalid,
+ '080001': error_invalid,
+ '00999': error_invalid,
+ '08 01': error_invalid,
+ '08A01': error_invalid,
+ }
+ self.assertFieldOutput(ESPostalCodeField, valid, invalid)
->>> f = ESPhoneNumberField(required=False)
->>> f.clean('650010101')
-u'650010101'
->>> f.clean('931234567')
-u'931234567'
->>> f.clean('800123123')
-u'800123123'
->>> f.clean('555555555')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
->>> f.clean('789789789')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
->>> f.clean('99123123')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
->>> f.clean('9999123123')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
->>> f.clean('')
-u''
+ def test_ESPhoneNumberField(self):
+ error_invalid = [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
+ valid = {
+ '650010101': '650010101',
+ '931234567': '931234567',
+ '800123123': '800123123',
+ }
+ invalid = {
+ '555555555': error_invalid,
+ '789789789': error_invalid,
+ '99123123': error_invalid,
+ '9999123123': error_invalid,
+ }
+ self.assertFieldOutput(ESPhoneNumberField, valid, invalid)
-# ESIdentityCardNumberField ##############################################################
+ def test_ESIdentityCardNumberField(self):
+ error_invalid = [u'Please enter a valid NIF, NIE, or CIF.']
+ error_checksum_nif = [u'Invalid checksum for NIF.']
+ error_checksum_nie = [u'Invalid checksum for NIE.']
+ error_checksum_cif = [u'Invalid checksum for CIF.']
+ valid = {
+ '78699688J': '78699688J',
+ '78699688-J': '78699688J',
+ '78699688 J': '78699688J',
+ '78699688 j': '78699688J',
+ 'X0901797J': 'X0901797J',
+ 'X-6124387-Q': 'X6124387Q',
+ 'X 0012953 G': 'X0012953G',
+ 'x-3287690-r': 'X3287690R',
+ 't-03287690r': 'T03287690R',
+ 'P2907500I': 'P2907500I',
+ 'B38790911': 'B38790911',
+ 'B31234560': 'B31234560',
+ 'B-3879091A': 'B3879091A',
+ 'B 38790911': 'B38790911',
+ 'P-3900800-H': 'P3900800H',
+ 'P 39008008': 'P39008008',
+ 'C-28795565': 'C28795565',
+ 'C 2879556E': 'C2879556E',
+ }
+ invalid = {
+ '78699688T': error_checksum_nif,
+ 'X-03287690': error_invalid,
+ 'X-03287690-T': error_checksum_nie,
+ 'B 38790917': error_checksum_cif,
+ 'C28795567': error_checksum_cif,
+ 'I38790911': error_invalid,
+ '78699688-2': error_invalid,
+ }
+ self.assertFieldOutput(ESIdentityCardNumberField, valid, invalid)
+
+ def test_ESCCCField(self):
+ error_invalid = [u'Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.']
+ error_checksum = [u'Invalid checksum for bank account number.']
+ valid = {
+ '20770338793100254321': '20770338793100254321',
+ '2077 0338 79 3100254321': '2077 0338 79 3100254321',
+ '2077-0338-79-3100254321': '2077-0338-79-3100254321',
+ }
+ invalid = {
+ '2077.0338.79.3100254321': error_invalid,
+ '2077-0338-78-3100254321': error_checksum,
+ '2077-0338-89-3100254321': error_checksum,
+ '2077-03-3879-3100254321': error_invalid,
+ }
+ self.assertFieldOutput(ESCCCField, valid, invalid)
-ESIdentityCardNumberField validates that data is a identification spanish code for companies or individuals (CIF, NIF or NIE).
->>> from django.contrib.localflavor.es.forms import ESIdentityCardNumberField
->>> f = ESIdentityCardNumberField()
->>> f.clean('78699688J')
-'78699688J'
->>> f.clean('78699688-J')
-'78699688J'
->>> f.clean('78699688 J')
-'78699688J'
->>> f.clean('78699688 j')
-'78699688J'
->>> f.clean('78699688T')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for NIF.']
->>> f.clean('X0901797J')
-'X0901797J'
->>> f.clean('X-6124387-Q')
-'X6124387Q'
->>> f.clean('X 0012953 G')
-'X0012953G'
->>> f.clean('x-3287690-r')
-'X3287690R'
->>> f.clean('t-03287690r')
-'T03287690R'
->>> f.clean('P2907500I')
-'P2907500I'
->>> f.clean('X-03287690')
-Traceback (most recent call last):
-...
-ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
->>> f.clean('X-03287690-T')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for NIE.']
->>> f.clean('B38790911')
-'B38790911'
->>> f.clean('B31234560')
-'B31234560'
->>> f.clean('B-3879091A')
-'B3879091A'
->>> f.clean('B 38790917')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for CIF.']
->>> f.clean('B 38790911')
-'B38790911'
->>> f.clean('P-3900800-H')
-'P3900800H'
->>> f.clean('P 39008008')
-'P39008008'
->>> f.clean('C-28795565')
-'C28795565'
->>> f.clean('C 2879556E')
-'C2879556E'
->>> f.clean('C28795567')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for CIF.']
->>> f.clean('I38790911')
-Traceback (most recent call last):
-...
-ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
->>> f.clean('78699688-2')
-Traceback (most recent call last):
-...
-ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
->>> f.clean('')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
-
->>> f = ESIdentityCardNumberField(required=False)
->>> f.clean('78699688J')
-'78699688J'
->>> f.clean('78699688-J')
-'78699688J'
->>> f.clean('78699688 J')
-'78699688J'
->>> f.clean('78699688 j')
-'78699688J'
->>> f.clean('78699688T')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for NIF.']
->>> f.clean('X0901797J')
-'X0901797J'
->>> f.clean('X-6124387-Q')
-'X6124387Q'
->>> f.clean('X 0012953 G')
-'X0012953G'
->>> f.clean('x-3287690-r')
-'X3287690R'
->>> f.clean('t-03287690r')
-'T03287690R'
->>> f.clean('X-03287690')
-Traceback (most recent call last):
-...
-ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
->>> f.clean('X-03287690-T')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for NIE.']
->>> f.clean('B38790911')
-'B38790911'
->>> f.clean('B-3879091A')
-'B3879091A'
->>> f.clean('B 38790917')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for CIF.']
->>> f.clean('B 38790911')
-'B38790911'
->>> f.clean('P-3900800-H')
-'P3900800H'
->>> f.clean('P 39008008')
-'P39008008'
->>> f.clean('C-28795565')
-'C28795565'
->>> f.clean('C 2879556E')
-'C2879556E'
->>> f.clean('C28795567')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for CIF.']
->>> f.clean('I38790911')
-Traceback (most recent call last):
-...
-ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
->>> f.clean('78699688-2')
-Traceback (most recent call last):
-...
-ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
->>> f.clean('')
-u''
-
-# ESCCCField ##############################################################
-
-ESCCCField validates that data is a spanish bank account number (codigo cuenta cliente).
-
->>> from django.contrib.localflavor.es.forms import ESCCCField
->>> f = ESCCCField()
->>> f.clean('20770338793100254321')
-'20770338793100254321'
->>> f.clean('2077 0338 79 3100254321')
-'2077 0338 79 3100254321'
->>> f.clean('2077-0338-79-3100254321')
-'2077-0338-79-3100254321'
->>> f.clean('2077.0338.79.3100254321')
-Traceback (most recent call last):
-...
-ValidationError: [u'Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.']
->>> f.clean('2077-0338-78-3100254321')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for bank account number.']
->>> f.clean('2077-0338-89-3100254321')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for bank account number.']
->>> f.clean('2077-03-3879-3100254321')
-Traceback (most recent call last):
-...
-ValidationError: [u'Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.']
->>> f.clean('')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
-
->>> f = ESCCCField(required=False)
->>> f.clean('20770338793100254321')
-'20770338793100254321'
->>> f.clean('2077 0338 79 3100254321')
-'2077 0338 79 3100254321'
->>> f.clean('2077-0338-79-3100254321')
-'2077-0338-79-3100254321'
->>> f.clean('2077.0338.79.3100254321')
-Traceback (most recent call last):
-...
-ValidationError: [u'Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.']
->>> f.clean('2077-0338-78-3100254321')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for bank account number.']
->>> f.clean('2077-0338-89-3100254321')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid checksum for bank account number.']
->>> f.clean('2077-03-3879-3100254321')
-Traceback (most recent call last):
-...
-ValidationError: [u'Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.']
->>> f.clean('')
-u''
-
-# ESRegionSelect ##############################################################
-
-ESRegionSelect is a Select widget that uses a list of Spain regions as its choices.
->>> from django.contrib.localflavor.es.forms import ESRegionSelect
->>> w = ESRegionSelect()
->>> w.render('regions', 'CT')
-u''
-
-# ESProvincenSelect ##############################################################
-
-ESProvinceSelect is a Select widget that uses a list of Spain provinces as its choices.
->>> from django.contrib.localflavor.es.forms import ESProvinceSelect
->>> w = ESProvinceSelect()
->>> w.render('provinces', '08')
-u''
-
-"""
diff --git a/tests/regressiontests/forms/localflavortests.py b/tests/regressiontests/forms/localflavortests.py
index 143ada1981..f44f81d12a 100644
--- a/tests/regressiontests/forms/localflavortests.py
+++ b/tests/regressiontests/forms/localflavortests.py
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
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
from localflavor.fr import tests as localflavor_fr_tests
from localflavor.generic import tests as localflavor_generic_tests
@@ -23,20 +22,20 @@ from localflavor.za import tests as localflavor_za_tests
from localflavor.ar import ARLocalFlavorTests
from localflavor.at import ATLocalFlavorTests
-from localflavor.de import DELocalFlavorTests
from localflavor.au import AULocalFlavorTests
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.de import DELocalFlavorTests
+from localflavor.es import ESLocalFlavorTests
from localflavor.il import ILLocalFlavorTests
from localflavor.tr import TRLocalFlavorTests
__test__ = {
'localflavor_cz_tests': localflavor_cz_tests,
- 'localflavor_es_tests': localflavor_es_tests,
'localflavor_fi_tests': localflavor_fi_tests,
'localflavor_fr_tests': localflavor_fr_tests,
'localflavor_generic_tests': localflavor_generic_tests,
diff --git a/tests/regressiontests/forms/tests/__init__.py b/tests/regressiontests/forms/tests/__init__.py
index ea2f098ba8..0ebdcadec4 100644
--- a/tests/regressiontests/forms/tests/__init__.py
+++ b/tests/regressiontests/forms/tests/__init__.py
@@ -22,6 +22,7 @@ from regressiontests.forms.localflavortests import (
CHLocalFlavorTests,
CLLocalFlavorTests,
DELocalFlavorTests,
+ ESLocalFlavorTests,
ILLocalFlavorTests,
TRLocalFlavorTests,
)