From aa05224dba4f77a9e30454245fa59db9038f597c Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Sun, 12 Dec 2010 04:33:38 +0000 Subject: [PATCH] Converted the Argentina localflavor doctests to unittests. We have always been at war with doctests. Thanks to Idan Gazit for the patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@14872 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/forms/localflavor/ar.py | 381 +++++------------- .../regressiontests/forms/localflavortests.py | 10 +- 2 files changed, 98 insertions(+), 293 deletions(-) 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,