From c00c377e5402fcb658baff982cf908138974a2b5 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Mon, 27 Dec 2010 07:41:26 +0000 Subject: [PATCH] Fixed #14593 -- change this warning to be a PendingDeprecationWarning. Also converted the Czech localflavor tests to be unittests. We have always been at war with doctests. Thanks to Idan Gazit. git-svn-id: http://code.djangoproject.com/svn/django/trunk@15062 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/localflavor/cz/forms.py | 2 +- docs/releases/1.3.txt | 8 + tests/regressiontests/forms/localflavor/cz.py | 215 ++++++++---------- .../regressiontests/forms/localflavortests.py | 8 +- tests/regressiontests/forms/tests/__init__.py | 43 +--- 5 files changed, 118 insertions(+), 158 deletions(-) diff --git a/django/contrib/localflavor/cz/forms.py b/django/contrib/localflavor/cz/forms.py index 13a94af05c..320a2a8c49 100644 --- a/django/contrib/localflavor/cz/forms.py +++ b/django/contrib/localflavor/cz/forms.py @@ -73,7 +73,7 @@ class CZBirthNumberField(Field): import warnings warnings.warn( "Support for validating the gender of a CZ Birth number has been deprecated.", - DeprecationWarning) + PendingDeprecationWarning) if gender == 'f': female_const = 50 elif gender == 'm': diff --git a/docs/releases/1.3.txt b/docs/releases/1.3.txt index af40156410..4a5631e264 100644 --- a/docs/releases/1.3.txt +++ b/docs/releases/1.3.txt @@ -539,3 +539,11 @@ GeoDjango to indicate possible faulty application code. A warning is now raised if :meth:`~django.contrib.gis.geos.GEOSGeometry.transform` is called when the SRID of the geometry is less than 0 or ``None``. + +``CZBirthNumberField.clean`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Previously this field's ``clean()`` method accepted a second, gender, argument +which allowed stronger validation checks to be made, however since this +argument could never actually be passed from the Django form machinery it is +now pending deprecation. diff --git a/tests/regressiontests/forms/localflavor/cz.py b/tests/regressiontests/forms/localflavor/cz.py index 4cff172529..e9419d39e7 100644 --- a/tests/regressiontests/forms/localflavor/cz.py +++ b/tests/regressiontests/forms/localflavor/cz.py @@ -1,126 +1,105 @@ -# -*- coding: utf-8 -*- -# Tests for the contrib/localflavor/ CZ Form Fields +import warnings -tests = r""" -# CZPostalCodeField ######################################################### +from django.contrib.localflavor.cz.forms import (CZPostalCodeField, + CZRegionSelect, CZBirthNumberField, CZICNumberField) ->>> from django.contrib.localflavor.cz.forms import CZPostalCodeField ->>> f = CZPostalCodeField() ->>> f.clean('84545x') -Traceback (most recent call last): -... -ValidationError: [u'Enter a postal code in the format XXXXX or XXX XX.'] ->>> f.clean('91909') -u'91909' ->>> f.clean('917 01') -u'91701' ->>> f.clean('12345') -u'12345' ->>> f.clean('123456') -Traceback (most recent call last): -... -ValidationError: [u'Enter a postal code in the format XXXXX or XXX XX.'] ->>> f.clean('1234') -Traceback (most recent call last): -... -ValidationError: [u'Enter a postal code in the format XXXXX or XXX XX.'] ->>> f.clean('123 4') -Traceback (most recent call last): -... -ValidationError: [u'Enter a postal code in the format XXXXX or XXX XX.'] +from django.core.exceptions import ValidationError +from utils import LocalFlavorTestCase -# CZRegionSelect ############################################################ ->>> from django.contrib.localflavor.cz.forms import CZRegionSelect ->>> w = CZRegionSelect() ->>> w.render('regions', 'TT') -u'' +class CZLocalFlavorTests(LocalFlavorTestCase): + def setUp(self): + self.save_warnings_state() + warnings.filterwarnings( + "ignore", + category=PendingDeprecationWarning, + module='django.contrib.localflavor.cz.forms' + ) -# CZBirthNumberField ######################################################## + def tearDown(self): + self.restore_warnings_state() ->>> from django.contrib.localflavor.cz.forms import CZBirthNumberField ->>> f = CZBirthNumberField() ->>> f.clean('880523/1237') -u'880523/1237' ->>> f.clean('8805231237') -u'8805231237' ->>> f.clean('880523/000') -u'880523/000' ->>> f.clean('880523000') -u'880523000' ->>> f.clean('882101/0011') -u'882101/0011' ->>> f.clean('880523/1237', 'm') -u'880523/1237' ->>> f.clean('885523/1231', 'f') -u'885523/1231' ->>> f.clean('123456/12') -Traceback (most recent call last): -... -ValidationError: [u'Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.'] ->>> f.clean('123456/12345') -Traceback (most recent call last): -... -ValidationError: [u'Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.'] ->>> f.clean('12345612') -Traceback (most recent call last): -... -ValidationError: [u'Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.'] ->>> f.clean('12345612345') -Traceback (most recent call last): -... -ValidationError: [u'Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.'] ->>> f.clean('881523/0000', 'm') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid birth number.'] ->>> f.clean('885223/0000', 'm') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid birth number.'] ->>> f.clean('881223/0000', 'f') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid birth number.'] ->>> f.clean('886523/0000', 'f') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid birth number.'] ->>> f.clean('880523/1239') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid birth number.'] ->>> f.clean('8805231239') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid birth number.'] ->>> f.clean('990101/0011') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid birth number.'] + def test_CZRegionSelect(self): + f = CZRegionSelect() + out = u'''''' + self.assertEqual(f.render('regions', 'TT'), out) -# CZICNumberField ######################################################## + def test_CZPostalCodeField(self): + error_format = [u'Enter a postal code in the format XXXXX or XXX XX.'] + valid = { + '91909': '91909', + '917 01': '91701', + '12345': '12345', + } + invalid = { + '84545x': error_format, + '123456': error_format, + '1234': error_format, + '123 4': error_format, + } + self.assertFieldOutput(CZPostalCodeField, valid, invalid) ->>> from django.contrib.localflavor.cz.forms import CZICNumberField ->>> f = CZICNumberField() ->>> f.clean('12345679') -u'12345679' ->>> f.clean('12345601') -u'12345601' ->>> f.clean('12345661') -u'12345661' ->>> f.clean('12345610') -u'12345610' ->>> f.clean('1234567') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid IC number.'] ->>> f.clean('12345660') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid IC number.'] ->>> f.clean('12345600') -Traceback (most recent call last): -... -ValidationError: [u'Enter a valid IC number.'] -""" + def test_CZBirthNumberField(self): + error_format = [u'Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.'] + error_invalid = [u'Enter a valid birth number.'] + valid = { + '880523/1237': '880523/1237', + '8805231237': '8805231237', + '880523/000': '880523/000', + '880523000': '880523000', + '882101/0011': '882101/0011', + } + invalid = { + '123456/12': error_format, + '123456/12345': error_format, + '12345612': error_format, + '12345612345': error_format, + '880523/1239': error_invalid, + '8805231239': error_invalid, + '990101/0011': error_invalid, + } + self.assertFieldOutput(CZBirthNumberField, valid, invalid) + + # These tests should go away in 1.4. + # http://code.djangoproject.com/ticket/14593 + f = CZBirthNumberField() + self.assertEqual(f.clean('880523/1237', 'm'), '880523/1237'), + self.assertEqual(f.clean('885523/1231', 'f'), '885523/1231') + self.assertRaisesRegexp(ValidationError, unicode(error_invalid), + f.clean, '881523/0000', 'm') + self.assertRaisesRegexp(ValidationError, unicode(error_invalid), + f.clean, '885223/0000', 'm') + self.assertRaisesRegexp(ValidationError, unicode(error_invalid), + f.clean, '881523/0000', 'f') + self.assertRaisesRegexp(ValidationError, unicode(error_invalid), + f.clean, '885223/0000', 'f') + + def test_CZICNumberField(self): + error_invalid = [u'Enter a valid IC number.'] + valid ={ + '12345679': '12345679', + '12345601': '12345601', + '12345661': '12345661', + '12345610': '12345610', + } + invalid = { + '1234567': error_invalid, + '12345660': error_invalid, + '12345600': error_invalid, + } + self.assertFieldOutput(CZICNumberField, valid, invalid) diff --git a/tests/regressiontests/forms/localflavortests.py b/tests/regressiontests/forms/localflavortests.py index befc0a7512..5ee1c32acc 100644 --- a/tests/regressiontests/forms/localflavortests.py +++ b/tests/regressiontests/forms/localflavortests.py @@ -1,6 +1,3 @@ -# -*- coding: utf-8 -*- -from localflavor.cz import tests as localflavor_cz_tests - from localflavor.ar import ARLocalFlavorTests from localflavor.at import ATLocalFlavorTests from localflavor.au import AULocalFlavorTests @@ -9,6 +6,7 @@ from localflavor.br import BRLocalFlavorTests from localflavor.ca import CALocalFlavorTests from localflavor.ch import CHLocalFlavorTests from localflavor.cl import CLLocalFlavorTests +from localflavor.cz import CZLocalFlavorTests from localflavor.de import DELocalFlavorTests from localflavor.es import ESLocalFlavorTests from localflavor.fi import FILocalFlavorTests @@ -33,7 +31,3 @@ from localflavor.us import USLocalFlavorTests from localflavor.uy import UYLocalFlavorTests from localflavor.za import ZALocalFlavorTests - -__test__ = { - 'localflavor_cz_tests': localflavor_cz_tests, -} diff --git a/tests/regressiontests/forms/tests/__init__.py b/tests/regressiontests/forms/tests/__init__.py index 4f24f52c6d..2d96b2fae8 100644 --- a/tests/regressiontests/forms/tests/__init__.py +++ b/tests/regressiontests/forms/tests/__init__.py @@ -12,36 +12,15 @@ from validators import TestFieldWithValidators from widgets import * from regressiontests.forms.localflavortests import ( - __test__, - ARLocalFlavorTests, - ATLocalFlavorTests, - AULocalFlavorTests, - BELocalFlavorTests, - BRLocalFlavorTests, - CALocalFlavorTests, - CHLocalFlavorTests, - CLLocalFlavorTests, - DELocalFlavorTests, - ESLocalFlavorTests, - FILocalFlavorTests, - FRLocalFlavorTests, - GenericLocalFlavorTests, - IDLocalFlavorTests, - IELocalFlavorTests, - ILLocalFlavorTests, - ISLocalFlavorTests, - ITLocalFlavorTests, - JPLocalFlavorTests, - KWLocalFlavorTests, - NLLocalFlavorTests, - PLLocalFlavorTests, - PTLocalFlavorTests, - ROLocalFlavorTests, - SELocalFlavorTests, - SKLocalFlavorTests, - TRLocalFlavorTests, - UKLocalFlavorTests, - USLocalFlavorTests, - UYLocalFlavorTests, - ZALocalFlavorTests, + ARLocalFlavorTests, ATLocalFlavorTests, AULocalFlavorTests, + BELocalFlavorTests, BRLocalFlavorTests, CALocalFlavorTests, + CHLocalFlavorTests, CLLocalFlavorTests, CZLocalFlavorTests, + DELocalFlavorTests, ESLocalFlavorTests, FILocalFlavorTests, + FRLocalFlavorTests, GenericLocalFlavorTests, IDLocalFlavorTests, + IELocalFlavorTests, ILLocalFlavorTests, ISLocalFlavorTests, + ITLocalFlavorTests, JPLocalFlavorTests, KWLocalFlavorTests, + NLLocalFlavorTests, PLLocalFlavorTests, PTLocalFlavorTests, + ROLocalFlavorTests, SELocalFlavorTests, SKLocalFlavorTests, + TRLocalFlavorTests, UKLocalFlavorTests, USLocalFlavorTests, + UYLocalFlavorTests, ZALocalFlavorTests )