Browse files

[1.2.X] Converted Spanish localflavor doctests to unittests. We have …

…always been at war with doctests. Thanks to Idan Gazit. Backport of [14937].

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14962 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
1 parent cae809b commit 812b1b2d8ce8b17ece74eadfbeea82d1ad1ad4f3 @alex alex committed Dec 18, 2010
View
515 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)
+
+from utils import LocalFlavorTestCase
+
+
+class ESLocalFlavorTests(LocalFlavorTestCase):
+ def test_ESRegionSelect(self):
+ f = ESRegionSelect()
+ out = u'''<select name="regions">
+<option value="AN">Andalusia</option>
+<option value="AR">Aragon</option>
+<option value="O">Principality of Asturias</option>
+<option value="IB">Balearic Islands</option>
+<option value="PV">Basque Country</option>
+<option value="CN">Canary Islands</option>
+<option value="S">Cantabria</option>
+<option value="CM">Castile-La Mancha</option>
+<option value="CL">Castile and Leon</option>
+<option value="CT" selected="selected">Catalonia</option>
+<option value="EX">Extremadura</option>
+<option value="GA">Galicia</option>
+<option value="LO">La Rioja</option>
+<option value="M">Madrid</option>
+<option value="MU">Region of Murcia</option>
+<option value="NA">Foral Community of Navarre</option>
+<option value="VC">Valencian Community</option>
+</select>'''
+ self.assertEqual(f.render('regions', 'CT'), out)
+
+ def test_ESProvinceSelect(self):
+ f = ESProvinceSelect()
+ out = u'''<select name="provinces">
+<option value="01">Arava</option>
+<option value="02">Albacete</option>
+<option value="03">Alacant</option>
+<option value="04">Almeria</option>
+<option value="05">Avila</option>
+<option value="06">Badajoz</option>
+<option value="07">Illes Balears</option>
+<option value="08" selected="selected">Barcelona</option>
+<option value="09">Burgos</option>
+<option value="10">Caceres</option>
+<option value="11">Cadiz</option>
+<option value="12">Castello</option>
+<option value="13">Ciudad Real</option>
+<option value="14">Cordoba</option>
+<option value="15">A Coruna</option>
+<option value="16">Cuenca</option>
+<option value="17">Girona</option>
+<option value="18">Granada</option>
+<option value="19">Guadalajara</option>
+<option value="20">Guipuzkoa</option>
+<option value="21">Huelva</option>
+<option value="22">Huesca</option>
+<option value="23">Jaen</option>
+<option value="24">Leon</option>
+<option value="25">Lleida</option>
+<option value="26">La Rioja</option>
+<option value="27">Lugo</option>
+<option value="28">Madrid</option>
+<option value="29">Malaga</option>
+<option value="30">Murcia</option>
+<option value="31">Navarre</option>
+<option value="32">Ourense</option>
+<option value="33">Asturias</option>
+<option value="34">Palencia</option>
+<option value="35">Las Palmas</option>
+<option value="36">Pontevedra</option>
+<option value="37">Salamanca</option>
+<option value="38">Santa Cruz de Tenerife</option>
+<option value="39">Cantabria</option>
+<option value="40">Segovia</option>
+<option value="41">Seville</option>
+<option value="42">Soria</option>
+<option value="43">Tarragona</option>
+<option value="44">Teruel</option>
+<option value="45">Toledo</option>
+<option value="46">Valencia</option>
+<option value="47">Valladolid</option>
+<option value="48">Bizkaia</option>
+<option value="49">Zamora</option>
+<option value="50">Zaragoza</option>
+<option value="51">Ceuta</option>
+<option value="52">Melilla</option>
+</select>'''
+ self.assertEqual(f.render('provinces', '08'), out)
+
+ 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)
+
+ 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)
+
+ 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)
-tests = r"""
-# ESPostalCodeField ##############################################################
-
-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''
-
-# ESPhoneNumberField ##############################################################
-
-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.']
-
->>> 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''
-
-# ESIdentityCardNumberField ##############################################################
-
-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'<select name="regions">\n<option value="AN">Andalusia</option>\n<option value="AR">Aragon</option>\n<option value="O">Principality of Asturias</option>\n<option value="IB">Balearic Islands</option>\n<option value="PV">Basque Country</option>\n<option value="CN">Canary Islands</option>\n<option value="S">Cantabria</option>\n<option value="CM">Castile-La Mancha</option>\n<option value="CL">Castile and Leon</option>\n<option value="CT" selected="selected">Catalonia</option>\n<option value="EX">Extremadura</option>\n<option value="GA">Galicia</option>\n<option value="LO">La Rioja</option>\n<option value="M">Madrid</option>\n<option value="MU">Region of Murcia</option>\n<option value="NA">Foral Community of Navarre</option>\n<option value="VC">Valencian Community</option>\n</select>'
-
-# 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'<select name="provinces">\n<option value="01">Arava</option>\n<option value="02">Albacete</option>\n<option value="03">Alacant</option>\n<option value="04">Almeria</option>\n<option value="05">Avila</option>\n<option value="06">Badajoz</option>\n<option value="07">Illes Balears</option>\n<option value="08" selected="selected">Barcelona</option>\n<option value="09">Burgos</option>\n<option value="10">Caceres</option>\n<option value="11">Cadiz</option>\n<option value="12">Castello</option>\n<option value="13">Ciudad Real</option>\n<option value="14">Cordoba</option>\n<option value="15">A Coruna</option>\n<option value="16">Cuenca</option>\n<option value="17">Girona</option>\n<option value="18">Granada</option>\n<option value="19">Guadalajara</option>\n<option value="20">Guipuzkoa</option>\n<option value="21">Huelva</option>\n<option value="22">Huesca</option>\n<option value="23">Jaen</option>\n<option value="24">Leon</option>\n<option value="25">Lleida</option>\n<option value="26">La Rioja</option>\n<option value="27">Lugo</option>\n<option value="28">Madrid</option>\n<option value="29">Malaga</option>\n<option value="30">Murcia</option>\n<option value="31">Navarre</option>\n<option value="32">Ourense</option>\n<option value="33">Asturias</option>\n<option value="34">Palencia</option>\n<option value="35">Las Palmas</option>\n<option value="36">Pontevedra</option>\n<option value="37">Salamanca</option>\n<option value="38">Santa Cruz de Tenerife</option>\n<option value="39">Cantabria</option>\n<option value="40">Segovia</option>\n<option value="41">Seville</option>\n<option value="42">Soria</option>\n<option value="43">Tarragona</option>\n<option value="44">Teruel</option>\n<option value="45">Toledo</option>\n<option value="46">Valencia</option>\n<option value="47">Valladolid</option>\n<option value="48">Bizkaia</option>\n<option value="49">Zamora</option>\n<option value="50">Zaragoza</option>\n<option value="51">Ceuta</option>\n<option value="52">Melilla</option>\n</select>'
-
-"""
View
4 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
@@ -22,18 +21,19 @@
from localflavor.za import tests as localflavor_za_tests
from localflavor.ar import ARLocalFlavorTests
+from localflavor.at import ATLocalFlavorTests
from localflavor.au import AULocalFlavorTests
from localflavor.at import ATLocalFlavorTests
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
__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,
View
1 tests/regressiontests/forms/tests/__init__.py
@@ -21,4 +21,5 @@
CHLocalFlavorTests,
CLLocalFlavorTests,
DELocalFlavorTests,
+ ESLocalFlavorTests,
)

0 comments on commit 812b1b2

Please sign in to comment.