Commit 6127cf13 authored by Alex Gaynor's avatar Alex Gaynor
Browse files

Converted French localflavor doctests into unittests. We have always been at...

Converted French localflavor doctests into unittests.  We have always been at war with doctests.  Thanks to Idan Gazit.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14939 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent eb4b1ab1
Loading
Loading
Loading
Loading
+34 −111
Original line number Diff line number Diff line
# -*- coding: utf-8 -*-
# Tests for the contrib/localflavor/ FR form fields.
from django.contrib.localflavor.fr.forms import (FRZipCodeField,
        FRPhoneNumberField, FRDepartmentSelect)

tests = r"""
# FRZipCodeField #############################################################
from utils import LocalFlavorTestCase

FRZipCodeField validates that the data is a valid FR zipcode.
>>> from django.contrib.localflavor.fr.forms import FRZipCodeField
>>> f = FRZipCodeField()
>>> f.clean('75001')
u'75001'
>>> f.clean('93200')
u'93200'
>>> f.clean('2A200')
Traceback (most recent call last):
...
ValidationError: [u'Enter a zip code in the format XXXXX.']
>>> f.clean('980001')
Traceback (most recent call last):
...
ValidationError: [u'Enter a zip code in the format XXXXX.']
>>> 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 = FRZipCodeField(required=False)
>>> f.clean('75001')
u'75001'
>>> f.clean('93200')
u'93200'
>>> f.clean('2A200')
Traceback (most recent call last):
...
ValidationError: [u'Enter a zip code in the format XXXXX.']
>>> f.clean('980001')
Traceback (most recent call last):
...
ValidationError: [u'Enter a zip code in the format XXXXX.']
>>> f.clean(None)
u''
>>> f.clean('')
u''
class FRLocalFlavorTests(LocalFlavorTestCase):
    def test_FRZipCodeField(self):
        error_format = [u'Enter a zip code in the format XXXXX.']
        valid = {
            '75001': '75001',
            '93200': '93200',
        }
        invalid = {
            '2A200': error_format,
            '980001': error_format,
        }
        self.assertFieldOutput(FRZipCodeField, valid, invalid)

    def test_FRPhoneNumberField(self):
        error_format = [u'Phone numbers must be in 0X XX XX XX XX format.']
        valid = {
            '01 55 44 58 64': '01 55 44 58 64',
            '0155445864': '01 55 44 58 64',
            '01 5544 5864': '01 55 44 58 64',
            '01 55.44.58.64': '01 55 44 58 64',
            '01.55.44.58.64': '01 55 44 58 64',
        }
        invalid = {
            '01,55,44,58,64': error_format,
            '555 015 544': error_format,
        }
        self.assertFieldOutput(FRPhoneNumberField, valid, invalid)

# FRPhoneNumberField ##########################################################

FRPhoneNumberField validates that the data is a valid french phone number.
It's normalized to 0X XX XX XX XX format. Dots are valid too.
>>> from django.contrib.localflavor.fr.forms import FRPhoneNumberField
>>> f = FRPhoneNumberField()
>>> f.clean('01 55 44 58 64')
u'01 55 44 58 64'
>>> f.clean('0155445864')
u'01 55 44 58 64'
>>> f.clean('01 5544 5864')
u'01 55 44 58 64'
>>> f.clean('01 55.44.58.64')
u'01 55 44 58 64'
>>> f.clean('01.55.44.58.64')
u'01 55 44 58 64'
>>> f.clean('01,55,44,58,64')
Traceback (most recent call last):
...
ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.']
>>> f.clean('555 015 544')
Traceback (most recent call last):
...
ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.']
>>> 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 = FRPhoneNumberField(required=False)
>>> f.clean('01 55 44 58 64')
u'01 55 44 58 64'
>>> f.clean('0155445864')
u'01 55 44 58 64'
>>> f.clean('01 5544 5864')
u'01 55 44 58 64'
>>> f.clean('01 55.44.58.64')
u'01 55 44 58 64'
>>> f.clean('01.55.44.58.64')
u'01 55 44 58 64'
>>> f.clean('01,55,44,58,64')
Traceback (most recent call last):
...
ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.']
>>> f.clean('555 015 544')
Traceback (most recent call last):
...
ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.']
>>> f.clean(None)
u''
>>> f.clean('')
u''

# FRDepartmentSelect ###############################################################

FRDepartmentSelect is a Select widget that uses a list of french departments
including DOM TOM
>>> from django.contrib.localflavor.fr.forms import FRDepartmentSelect
>>> w = FRDepartmentSelect()
>>> print w.render('dep', 'Paris')
<select name="dep">
    def test_FRDepartmentSelect(self):
        f = FRDepartmentSelect()
        out = u'''<select name="dep">
<option value="01">01 - Ain</option>
<option value="02">02 - Aisne</option>
<option value="03">03 - Allier</option>
@@ -218,5 +141,5 @@ including DOM TOM
<option value="986">986 - Wallis et Futuna</option>
<option value="987">987 - Polynesie Francaise</option>
<option value="988">988 - Nouvelle-Caledonie</option>
</select>
"""
</select>'''
        self.assertEqual(f.render('dep', 'Paris'), out)
+1 −2
Original line number Diff line number Diff line
# -*- coding: utf-8 -*-
from localflavor.cz import tests as localflavor_cz_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
@@ -30,13 +29,13 @@ from localflavor.cl import CLLocalFlavorTests
from localflavor.de import DELocalFlavorTests
from localflavor.es import ESLocalFlavorTests
from localflavor.fi import FILocalFlavorTests
from localflavor.fr import FRLocalFlavorTests
from localflavor.il import ILLocalFlavorTests
from localflavor.tr import TRLocalFlavorTests


__test__ = {
    'localflavor_cz_tests': localflavor_cz_tests,
    'localflavor_fr_tests': localflavor_fr_tests,
    'localflavor_generic_tests': localflavor_generic_tests,
    'localflavor_id_tests': localflavor_id_tests,
    'localflavor_ie_tests': localflavor_ie_tests,
+1 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ from regressiontests.forms.localflavortests import (
    DELocalFlavorTests,
    ESLocalFlavorTests,
    FILocalFlavorTests,
    FRLocalFlavorTests,
    ILLocalFlavorTests,
    TRLocalFlavorTests,
)