Author: Alex
Date: 2010-12-18 14:29:25 -0600 (Sat, 18 Dec 2010)
New Revision: 14933

Modified:
   django/trunk/tests/regressiontests/forms/localflavor/br.py
   django/trunk/tests/regressiontests/forms/localflavortests.py
   django/trunk/tests/regressiontests/forms/tests/__init__.py
Log:
Converted the Brazillian localflavor doctests to unittests.  We have always 
been at war with doctests.  Thanks to Idan Gazit.

Modified: django/trunk/tests/regressiontests/forms/localflavor/br.py
===================================================================
--- django/trunk/tests/regressiontests/forms/localflavor/br.py  2010-12-18 
20:29:16 UTC (rev 14932)
+++ django/trunk/tests/regressiontests/forms/localflavor/br.py  2010-12-18 
20:29:25 UTC (rev 14933)
@@ -1,220 +1,144 @@
-# -*- coding: utf-8 -*-
-# Tests for the contrib/localflavor/ BR form fields.
+from django.contrib.localflavor.br.forms import (BRZipCodeField,
+    BRCNPJField, BRCPFField, BRPhoneNumberField, BRStateSelect,
+    BRStateChoiceField)
 
-tests = r"""
-# BRZipCodeField ############################################################
->>> from django.contrib.localflavor.br.forms import BRZipCodeField
->>> f = BRZipCodeField()
->>> f.clean('12345-123')
-u'12345-123'
->>> f.clean('12345_123')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
->>> f.clean('1234-123')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
->>> f.clean('abcde-abc')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
->>> f.clean('12345-')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
->>> f.clean('-123')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
->>> f.clean('')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f.clean(None)
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
+from utils import LocalFlavorTestCase
 
->>> f = BRZipCodeField(required=False)
->>> f.clean(None)
-u''
->>> f.clean('')
-u''
->>> f.clean('-123')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
->>> f.clean('12345-')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
->>> f.clean('abcde-abc')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
->>> f.clean('1234-123')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
->>> f.clean('12345_123')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
->>> f.clean('12345-123')
-u'12345-123'
 
-# BRCNPJField ############################################################
+class BRLocalFlavorTests(LocalFlavorTestCase):
+    def test_BRZipCodeField(self):
+        error_format = [u'Enter a zip code in the format XXXXX-XXX.']
+        valid = {
+            '12345-123': '12345-123',
+        }
+        invalid = {
+            '12345_123': error_format,
+            '1234-123': error_format,
+            'abcde-abc': error_format,
+            '12345-': error_format,
+            '-123': error_format,
+        }
+        self.assertFieldOutput(BRZipCodeField, valid, invalid)
 
->>> from django.contrib.localflavor.br.forms import BRCNPJField
->>> f = BRCNPJField(required=True)
->>> f.clean('')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f.clean('12-345-678/9012-10')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CNPJ number.']
->>> f.clean('12.345.678/9012-10')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CNPJ number.']
->>> f.clean('12345678/9012-10')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CNPJ number.']
->>> f.clean('64.132.916/0001-88')
-'64.132.916/0001-88'
->>> f.clean('64-132-916/0001-88')
-'64-132-916/0001-88'
->>> f.clean('64132916/0001-88')
-'64132916/0001-88'
->>> f.clean('64.132.916/0001-XX')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field requires only numbers.']
->>> f = BRCNPJField(required=False)
->>> f.clean('')
-u''
+    def test_BRCNPJField(self):
+        error_format = [u'Invalid CNPJ number.']
+        error_numbersonly = [u'This field requires only numbers.']
+        valid = {
+            '64.132.916/0001-88': '64.132.916/0001-88',
+            '64-132-916/0001-88': '64-132-916/0001-88',
+            '64132916/0001-88': '64132916/0001-88',
+        }
+        invalid = {
+            '12-345-678/9012-10': error_format,
+            '12.345.678/9012-10': error_format,
+            '12345678/9012-10': error_format,
+            '64.132.916/0001-XX': error_numbersonly,
+        }
+        self.assertFieldOutput(BRCNPJField, valid, invalid)
 
-# BRCPFField #################################################################
+    def test_BRCPFField(self):
+        error_format = [u'Invalid CPF number.']
+        error_numbersonly = [u'This field requires only numbers.']
+        error_atmost_chars = [u'Ensure this value has at most 14 characters 
(it has 15).']
+        error_atleast_chars = [u'Ensure this value has at least 11 characters 
(it has 10).']
+        error_atmost = [u'This field requires at most 11 digits or 14 
characters.']
+        valid = {
+            '663.256.017-26': '663.256.017-26',
+            '66325601726': '66325601726',
+            '375.788.573-20': '375.788.573-20',
+            '84828509895': '84828509895',
+        }
+        invalid = {
+            '489.294.654-54': error_format,
+            '295.669.575-98': error_format,
+            '539.315.127-22': error_format,
+            '375.788.573-XX': error_numbersonly,
+            '375.788.573-000': error_atmost_chars,
+            '123.456.78': error_atleast_chars,
+            '123456789555': error_atmost,
+        }
+        self.assertFieldOutput(BRCPFField, valid, invalid)
 
->>> from django.contrib.localflavor.br.forms import BRCPFField
->>> f = BRCPFField()
->>> f.clean('')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f.clean(None)
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f.clean('489.294.654-54')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CPF number.']
->>> f.clean('295.669.575-98')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CPF number.']
->>> f.clean('539.315.127-22')
-Traceback (most recent call last):
-...
-ValidationError: [u'Invalid CPF number.']
->>> f.clean('663.256.017-26')
-u'663.256.017-26'
->>> f.clean('66325601726')
-u'66325601726'
->>> f.clean('375.788.573-20')
-u'375.788.573-20'
->>> f.clean('84828509895')
-u'84828509895'
->>> f.clean('375.788.573-XX')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field requires only numbers.']
->>> f.clean('375.788.573-000')
-Traceback (most recent call last):
-...
-ValidationError: [u'Ensure this value has at most 14 characters (it has 15).']
->>> f.clean('123.456.78')
-Traceback (most recent call last):
-...
-ValidationError: [u'Ensure this value has at least 11 characters (it has 10).']
->>> f.clean('123456789555')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field requires at most 11 digits or 14 characters.']
->>> f = BRCPFField(required=False)
->>> f.clean('')
-u''
->>> f.clean(None)
-u''
+    def test_BRPhoneNumberField(self):
+        # TODO: this doesn't test for any invalid inputs.
+        valid = {
+            '41-3562-3464': u'41-3562-3464',
+            '4135623464': u'41-3562-3464',
+            '41 3562-3464': u'41-3562-3464',
+            '41 3562 3464': u'41-3562-3464',
+            '(41) 3562 3464': u'41-3562-3464',
+            '41.3562.3464': u'41-3562-3464',
+            '41.3562-3464': u'41-3562-3464',
+            ' (41) 3562.3464': u'41-3562-3464',
+        }
+        invalid = {}
+        self.assertFieldOutput(BRPhoneNumberField, valid, invalid)
 
-# BRPhoneNumberField #########################################################
+    def test_BRStateSelect(self):
+        f = BRStateSelect()
+        out = u'''<select name="states">
+<option value="AC">Acre</option>
+<option value="AL">Alagoas</option>
+<option value="AP">Amap\xe1</option>
+<option value="AM">Amazonas</option>
+<option value="BA">Bahia</option>
+<option value="CE">Cear\xe1</option>
+<option value="DF">Distrito Federal</option>
+<option value="ES">Esp\xedrito Santo</option>
+<option value="GO">Goi\xe1s</option>
+<option value="MA">Maranh\xe3o</option>
+<option value="MT">Mato Grosso</option>
+<option value="MS">Mato Grosso do Sul</option>
+<option value="MG">Minas Gerais</option>
+<option value="PA">Par\xe1</option>
+<option value="PB">Para\xedba</option>
+<option value="PR" selected="selected">Paran\xe1</option>
+<option value="PE">Pernambuco</option>
+<option value="PI">Piau\xed</option>
+<option value="RJ">Rio de Janeiro</option>
+<option value="RN">Rio Grande do Norte</option>
+<option value="RS">Rio Grande do Sul</option>
+<option value="RO">Rond\xf4nia</option>
+<option value="RR">Roraima</option>
+<option value="SC">Santa Catarina</option>
+<option value="SP">S\xe3o Paulo</option>
+<option value="SE">Sergipe</option>
+<option value="TO">Tocantins</option>
+</select>'''
+        self.assertEqual(f.render('states', 'PR'), out)
 
->>> from django.contrib.localflavor.br.forms import BRPhoneNumberField
->>> f = BRPhoneNumberField()
->>> f.clean('41-3562-3464')
-u'41-3562-3464'
->>> f.clean('4135623464')
-u'41-3562-3464'
->>> f.clean('41 3562-3464')
-u'41-3562-3464'
->>> f.clean('41 3562 3464')
-u'41-3562-3464'
->>> f.clean('(41) 3562 3464')
-u'41-3562-3464'
->>> f.clean('41.3562.3464')
-u'41-3562-3464'
->>> f.clean('41.3562-3464')
-u'41-3562-3464'
->>> f.clean(' (41) 3562.3464')
-u'41-3562-3464'
->>> 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 = BRPhoneNumberField(required=False)
->>> f.clean('')
-u''
->>> f.clean(None)
-u''
->>> f.clean(' (41) 3562.3464')
-u'41-3562-3464'
->>> f.clean('41.3562-3464')
-u'41-3562-3464'
->>> f.clean('(41) 3562 3464')
-u'41-3562-3464'
->>> f.clean('4135623464')
-u'41-3562-3464'
->>> f.clean('41 3562-3464')
-u'41-3562-3464'
-
-# BRStateSelect ##############################################################
-
->>> from django.contrib.localflavor.br.forms import BRStateSelect
->>> w = BRStateSelect()
->>> w.render('states', 'PR')
-u'<select name="states">\n<option value="AC">Acre</option>\n<option 
value="AL">Alagoas</option>\n<option value="AP">Amap\xe1</option>\n<option 
value="AM">Amazonas</option>\n<option value="BA">Bahia</option>\n<option 
value="CE">Cear\xe1</option>\n<option value="DF">Distrito 
Federal</option>\n<option value="ES">Esp\xedrito Santo</option>\n<option 
value="GO">Goi\xe1s</option>\n<option value="MA">Maranh\xe3o</option>\n<option 
value="MT">Mato Grosso</option>\n<option value="MS">Mato Grosso do 
Sul</option>\n<option value="MG">Minas Gerais</option>\n<option 
value="PA">Par\xe1</option>\n<option value="PB">Para\xedba</option>\n<option 
value="PR" selected="selected">Paran\xe1</option>\n<option 
value="PE">Pernambuco</option>\n<option value="PI">Piau\xed</option>\n<option 
value="RJ">Rio de Janeiro</option>\n<option value="RN">Rio Grande do 
Norte</option>\n<option value="RS">Rio Grande do Sul</option>\n<option 
value="RO">Rond\xf4nia</option>\n<option value="RR">Roraima</option>\n<option 
value="SC">Santa Catarina</option>\n<option value="SP">S\xe3o 
Paulo</option>\n<option value="SE">Sergipe</option>\n<option 
value="TO">Tocantins</option>\n</select>'
-
-# BRStateChoiceField #########################################################
->>> from django.contrib.localflavor.br.forms import BRStateChoiceField
->>> f = BRStateChoiceField()
->>> ', '.join([f.clean(s) for s, _ in f.widget.choices])
-u'AC, AL, AP, AM, BA, CE, DF, ES, GO, MA, MT, MS, MG, PA, PB, PR, PE, PI, RJ, 
RN, RS, RO, RR, SC, SP, SE, TO'
->>> f.clean('')
-Traceback (most recent call last):
-...
-ValidationError: [u'This field is required.']
->>> f.clean('pr')
-Traceback (most recent call last):
-...
-ValidationError: [u'Select a valid brazilian state. That state is not one of 
the available states.']
-"""
+    def test_BRStateChoiceField(self):
+        error_invalid = [u'Select a valid brazilian state. That state is not 
one of the available states.']
+        valid = {
+            'AC': 'AC',
+            'AL': 'AL',
+            'AP': 'AP',
+            'AM': 'AM',
+            'BA': 'BA',
+            'CE': 'CE',
+            'DF': 'DF',
+            'ES': 'ES',
+            'GO': 'GO',
+            'MA': 'MA',
+            'MT': 'MT',
+            'MS': 'MS',
+            'MG': 'MG',
+            'PA': 'PA',
+            'PB': 'PB',
+            'PR': 'PR',
+            'PE': 'PE',
+            'PI': 'PI',
+            'RJ': 'RJ',
+            'RN': 'RN',
+            'RS': 'RS',
+            'RO': 'RO',
+            'RR': 'RR',
+            'SC': 'SC',
+            'SP': 'SP',
+            'SE': 'SE',
+            'TO': 'TO',
+        }
+        invalid = {
+            'pr': error_invalid,
+        }
+        self.assertFieldOutput(BRStateChoiceField, valid, invalid)

Modified: django/trunk/tests/regressiontests/forms/localflavortests.py
===================================================================
--- django/trunk/tests/regressiontests/forms/localflavortests.py        
2010-12-18 20:29:16 UTC (rev 14932)
+++ django/trunk/tests/regressiontests/forms/localflavortests.py        
2010-12-18 20:29:25 UTC (rev 14933)
@@ -1,5 +1,4 @@
 # -*- coding: utf-8 -*-
-from localflavor.br import tests as localflavor_br_tests
 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
@@ -30,12 +29,12 @@
 from localflavor.de import DELocalFlavorTests
 from localflavor.au import AULocalFlavorTests
 from localflavor.be import BELocalFlavorTests
+from localflavor.br import BRLocalFlavorTests
 from localflavor.il import ILLocalFlavorTests
 from localflavor.tr import TRLocalFlavorTests
 
 
 __test__ = {
-    'localflavor_br_tests': localflavor_br_tests,
     'localflavor_ca_tests': localflavor_ca_tests,
     'localflavor_ch_tests': localflavor_ch_tests,
     'localflavor_cl_tests': localflavor_cl_tests,

Modified: django/trunk/tests/regressiontests/forms/tests/__init__.py
===================================================================
--- django/trunk/tests/regressiontests/forms/tests/__init__.py  2010-12-18 
20:29:16 UTC (rev 14932)
+++ django/trunk/tests/regressiontests/forms/tests/__init__.py  2010-12-18 
20:29:25 UTC (rev 14933)
@@ -17,6 +17,7 @@
     ATLocalFlavorTests,
     AULocalFlavorTests,
     BELocalFlavorTests,
+    BRLocalFlavorTests,
     DELocalFlavorTests,
     ILLocalFlavorTests,
     TRLocalFlavorTests,

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to