Răsfoiți Sursa

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
Alex Gaynor 14 ani în urmă
părinte
comite
c00c377e54

+ 1 - 1
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':

+ 8 - 0
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.

+ 97 - 118
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'<select name="regions">\n<option value="PR">Prague</option>\n<option value="CE">Central Bohemian Region</option>\n<option value="SO">South Bohemian Region</option>\n<option value="PI">Pilsen Region</option>\n<option value="CA">Carlsbad Region</option>\n<option value="US">Usti Region</option>\n<option value="LB">Liberec Region</option>\n<option value="HK">Hradec Region</option>\n<option value="PA">Pardubice Region</option>\n<option value="VY">Vysocina Region</option>\n<option value="SM">South Moravian Region</option>\n<option value="OL">Olomouc Region</option>\n<option value="ZL">Zlin Region</option>\n<option value="MS">Moravian-Silesian Region</option>\n</select>'
+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'''<select name="regions">
+<option value="PR">Prague</option>
+<option value="CE">Central Bohemian Region</option>
+<option value="SO">South Bohemian Region</option>
+<option value="PI">Pilsen Region</option>
+<option value="CA">Carlsbad Region</option>
+<option value="US">Usti Region</option>
+<option value="LB">Liberec Region</option>
+<option value="HK">Hradec Region</option>
+<option value="PA">Pardubice Region</option>
+<option value="VY">Vysocina Region</option>
+<option value="SM">South Moravian Region</option>
+<option value="OL">Olomouc Region</option>
+<option value="ZL">Zlin Region</option>
+<option value="MS">Moravian-Silesian Region</option>
+</select>'''
+        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)

+ 1 - 7
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,
-}

+ 11 - 32
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
 )