diff --git a/tests/regressiontests/forms/localflavor/ar.py b/tests/regressiontests/forms/localflavor/ar.py
index c7967c84da..9c672690ce 100644
--- a/tests/regressiontests/forms/localflavor/ar.py
+++ b/tests/regressiontests/forms/localflavor/ar.py
@@ -1,294 +1,99 @@
-# -*- coding: utf-8 -*-
-# Tests for the contrib/localflavor/ AR form fields.
+from django.contrib.localflavor.ar.forms import (ARProvinceSelect,
+ ARPostalCodeField, ARDNIField, ARCUITField)
-tests = r"""
-# ARProvinceField #############################################################
+from utils import LocalFlavorTestCase
->>> from django.contrib.localflavor.ar.forms import ARProvinceSelect
->>> f = ARProvinceSelect()
->>> f.render('provincias', 'A')
-u''
-# ARPostalCodeField ###########################################################
+class ARLocalFlavorTests(LocalFlavorTestCase):
+ def test_ARProvinceSelect(self):
+ f = ARProvinceSelect()
+ out = u''''''
+ self.assertEqual(f.render('provincias', 'A'), out)
->>> from django.contrib.localflavor.ar.forms import ARPostalCodeField
->>> f = ARPostalCodeField()
->>> f.clean('5000')
-u'5000'
->>> f.clean('C1064AAB')
-u'C1064AAB'
->>> f.clean('c1064AAB')
-u'C1064AAB'
->>> f.clean('C1064aab')
-u'C1064AAB'
->>> f.clean(u'4400')
-u'4400'
->>> f.clean(u'C1064AAB')
-u'C1064AAB'
->>> f.clean('C1064AABB')
-Traceback (most recent call last):
-...
-ValidationError: [u'Ensure this value has at most 8 characters (it has 9).', u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean('C1064AA')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean('C106AAB')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean('106AAB')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean('500')
-Traceback (most recent call last):
-...
-ValidationError: [u'Ensure this value has at least 4 characters (it has 3).', u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean('5PPP')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean(None)
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f.clean('')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f.clean(u'')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
+ def test_ARPostalCodeField(self):
+ error_format = [u'Enter a postal code in the format NNNN or ANNNNAAA.']
+ error_atmost = [u'Ensure this value has at most 8 characters (it has 9).']
+ error_atleast = [u'Ensure this value has at least 4 characters (it has 3).']
+ valid = {
+ '5000': '5000',
+ 'C1064AAB': 'C1064AAB',
+ 'c1064AAB': 'C1064AAB',
+ 'C1064aab': 'C1064AAB',
+ '4400': '4400',
+ u'C1064AAB': 'C1064AAB',
+ }
+ invalid = {
+ 'C1064AABB': error_atmost + error_format,
+ 'C1064AA': error_format,
+ 'C1064AB': error_format,
+ '106AAB': error_format,
+ '500': error_atleast + error_format,
+ '5PPP': error_format,
+ }
+ self.assertFieldOutput(ARPostalCodeField, valid, invalid)
->>> f = ARPostalCodeField(required=False)
->>> f.clean('5000')
-u'5000'
->>> f.clean('C1064AAB')
-u'C1064AAB'
->>> f.clean('c1064AAB')
-u'C1064AAB'
->>> f.clean('C1064aab')
-u'C1064AAB'
->>> f.clean(u'4400')
-u'4400'
->>> f.clean(u'C1064AAB')
-u'C1064AAB'
->>> f.clean('C1064AABB')
-Traceback (most recent call last):
-...
-ValidationError: [u'Ensure this value has at most 8 characters (it has 9).', u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean('C1064AA')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean('C106AAB')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean('106AAB')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean('500')
-Traceback (most recent call last):
-...
-ValidationError: [u'Ensure this value has at least 4 characters (it has 3).', u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean('5PPP')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
->>> f.clean(None)
-u''
->>> f.clean('')
-u''
->>> f.clean(u'')
-u''
+ def test_ARDNIField(self):
+ error_length = [u'This field requires 7 or 8 digits.']
+ error_digitsonly = [u'This field requires only numbers.']
+ valid = {
+ '20123456': '20123456',
+ '20.123.456': '20123456',
+ u'20123456': '20123456',
+ u'20.123.456': '20123456',
+ '20.123456': '20123456',
+ '9123456': '9123456',
+ '9.123.456': '9123456',
+ }
+ invalid = {
+ '101234566': error_length,
+ 'W0123456': error_digitsonly,
+ '10,123,456': error_digitsonly,
+ }
+ self.assertFieldOutput(ARDNIField, valid, invalid)
-# ARDNIField ##################################################################
-
->>> from django.contrib.localflavor.ar.forms import ARDNIField
->>> f = ARDNIField()
->>> f.clean('20123456')
-u'20123456'
->>> f.clean('20.123.456')
-u'20123456'
->>> f.clean('9123456')
-u'9123456'
->>> f.clean('9.123.456')
-u'9123456'
->>> f.clean(u'20123456')
-u'20123456'
->>> f.clean(u'20.123.456')
-u'20123456'
->>> f.clean('20.123456')
-u'20123456'
->>> f.clean('101234566')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field requires 7 or 8 digits.']
->>> f.clean('W0123456')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field requires only numbers.']
->>> f.clean('10,123,456')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field requires only numbers.']
->>> f.clean(None)
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f.clean('')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f.clean(u'')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
-
->>> f = ARDNIField(required=False)
->>> f.clean('20123456')
-u'20123456'
->>> f.clean('20.123.456')
-u'20123456'
->>> f.clean('9123456')
-u'9123456'
->>> f.clean('9.123.456')
-u'9123456'
->>> f.clean(u'20123456')
-u'20123456'
->>> f.clean(u'20.123.456')
-u'20123456'
->>> f.clean('20.123456')
-u'20123456'
->>> f.clean('101234566')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field requires 7 or 8 digits.']
->>> f.clean('W0123456')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field requires only numbers.']
->>> f.clean('10,123,456')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field requires only numbers.']
->>> f.clean(None)
-u''
->>> f.clean('')
-u''
->>> f.clean(u'')
-u''
-
-# ARCUITField #################################################################
-
->>> from django.contrib.localflavor.ar.forms import ARCUITField
->>> f = ARCUITField()
->>> f.clean('20-10123456-9')
-u'20-10123456-9'
->>> f.clean(u'20-10123456-9')
-u'20-10123456-9'
->>> f.clean('27-10345678-4')
-u'27-10345678-4'
->>> f.clean('20101234569')
-u'20-10123456-9'
->>> f.clean('27103456784')
-u'27-10345678-4'
->>> f.clean('2-10123456-9')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
->>> f.clean('210123456-9')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
->>> f.clean('20-10123456')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
->>> f.clean('20-10123456-')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
->>> f.clean('20-10123456-5')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CUIT.']
->>> f.clean(u'2-10123456-9')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
->>> f.clean('27-10345678-1')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CUIT.']
->>> f.clean(u'27-10345678-1')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CUIT.']
->>> f.clean(None)
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f.clean('')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f.clean(u'')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
-
->>> f = ARCUITField(required=False)
->>> f.clean('20-10123456-9')
-u'20-10123456-9'
->>> f.clean(u'20-10123456-9')
-u'20-10123456-9'
->>> f.clean('27-10345678-4')
-u'27-10345678-4'
->>> f.clean('20101234569')
-u'20-10123456-9'
->>> f.clean('27103456784')
-u'27-10345678-4'
->>> f.clean('2-10123456-9')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
->>> f.clean('210123456-9')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
->>> f.clean('20-10123456')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
->>> f.clean('20-10123456-')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
->>> f.clean('20-10123456-5')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CUIT.']
->>> f.clean(u'2-10123456-9')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
->>> f.clean('27-10345678-1')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CUIT.']
->>> f.clean(u'27-10345678-1')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CUIT.']
->>> f.clean(None)
-u''
->>> f.clean('')
-u''
->>> f.clean(u'')
-u''
-"""
+ def test_ARCUITField(self):
+ error_format = [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+ error_invalid = [u'Invalid CUIT.']
+ valid = {
+ '20-10123456-9': '20-10123456-9',
+ u'20-10123456-9': '20-10123456-9',
+ '27-10345678-4': '27-10345678-4',
+ '20101234569': '20-10123456-9',
+ '27103456784': '27-10345678-4',
+ }
+ invalid = {
+ '2-10123456-9': error_format,
+ '210123456-9': error_format,
+ '20-10123456': error_format,
+ '20-10123456-': error_format,
+ '20-10123456-5': error_invalid,
+ '2-10123456-9': error_format,
+ '27-10345678-1': error_invalid,
+ u'27-10345678-1': error_invalid,
+ }
+ self.assertFieldOutput(ARCUITField, valid, invalid)
diff --git a/tests/regressiontests/forms/localflavortests.py b/tests/regressiontests/forms/localflavortests.py
index 0d6ff2658c..7087cf0eb8 100644
--- a/tests/regressiontests/forms/localflavortests.py
+++ b/tests/regressiontests/forms/localflavortests.py
@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
-from localflavor.ar import tests as localflavor_ar_tests
from localflavor.at import tests as localflavor_at_tests
from localflavor.au import tests as localflavor_au_tests
from localflavor.br import tests as localflavor_br_tests
@@ -7,14 +6,12 @@ from localflavor.ca import tests as localflavor_ca_tests
from localflavor.ch import tests as localflavor_ch_tests
from localflavor.cl import tests as localflavor_cl_tests
from localflavor.cz import tests as localflavor_cz_tests
-from localflavor.de import DELocalFlavorTests
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
from localflavor.id import tests as localflavor_id_tests
from localflavor.ie import tests as localflavor_ie_tests
-from localflavor.il import ILLocalFlavorTests
from localflavor.is_ import tests as localflavor_is_tests
from localflavor.it import tests as localflavor_it_tests
from localflavor.jp import tests as localflavor_jp_tests
@@ -25,16 +22,19 @@ from localflavor.pt import tests as localflavor_pt_tests
from localflavor.ro import tests as localflavor_ro_tests
from localflavor.se import tests as localflavor_se_tests
from localflavor.sk import tests as localflavor_sk_tests
-from localflavor.tr import TRLocalFlavorTests
from localflavor.uk import tests as localflavor_uk_tests
from localflavor.us import tests as localflavor_us_tests
from localflavor.uy import tests as localflavor_uy_tests
from localflavor.za import tests as localflavor_za_tests
+from localflavor.ar import ARLocalFlavorTests
+from localflavor.de import DELocalFlavorTests
from localflavor.be import BELocalFlavorTests
+from localflavor.il import ILLocalFlavorTests
+from localflavor.tr import TRLocalFlavorTests
+
__test__ = {
- 'localflavor_ar_tests': localflavor_ar_tests,
'localflavor_at_tests': localflavor_at_tests,
'localflavor_au_tests': localflavor_au_tests,
'localflavor_br_tests': localflavor_br_tests,