1
# -*- coding: utf-8 -*-
2
# Tests for the contrib/localflavor/ US form fields.
5
# USZipCodeField ##############################################################
7
USZipCodeField validates that the data is either a five-digit U.S. zip code or
9
>>> from django.contrib.localflavor.us.forms import USZipCodeField
10
>>> f = USZipCodeField()
18
Traceback (most recent call last):
20
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
21
>>> f.clean('60606-1234')
23
>>> f.clean('6060-1234')
24
Traceback (most recent call last):
26
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
28
Traceback (most recent call last):
30
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
32
Traceback (most recent call last):
34
ValidationError: [u'This field is required.']
36
Traceback (most recent call last):
38
ValidationError: [u'This field is required.']
40
>>> f = USZipCodeField(required=False)
48
Traceback (most recent call last):
50
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
51
>>> f.clean('60606-1234')
53
>>> f.clean('6060-1234')
54
Traceback (most recent call last):
56
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
58
Traceback (most recent call last):
60
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
66
# USPhoneNumberField ##########################################################
68
USPhoneNumberField validates that the data is a valid U.S. phone number,
69
including the area code. It's normalized to XXX-XXX-XXXX format.
70
>>> from django.contrib.localflavor.us.forms import USPhoneNumberField
71
>>> f = USPhoneNumberField()
72
>>> f.clean('312-555-1212')
74
>>> f.clean('3125551212')
76
>>> f.clean('312 555-1212')
78
>>> f.clean('(312) 555-1212')
80
>>> f.clean('312 555 1212')
82
>>> f.clean('312.555.1212')
84
>>> f.clean('312.555-1212')
86
>>> f.clean(' (312) 555.1212 ')
88
>>> f.clean('555-1212')
89
Traceback (most recent call last):
91
ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
92
>>> f.clean('312-55-1212')
93
Traceback (most recent call last):
95
ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
97
Traceback (most recent call last):
99
ValidationError: [u'This field is required.']
101
Traceback (most recent call last):
103
ValidationError: [u'This field is required.']
105
>>> f = USPhoneNumberField(required=False)
106
>>> f.clean('312-555-1212')
108
>>> f.clean('3125551212')
110
>>> f.clean('312 555-1212')
112
>>> f.clean('(312) 555-1212')
114
>>> f.clean('312 555 1212')
116
>>> f.clean('312.555.1212')
118
>>> f.clean('312.555-1212')
120
>>> f.clean(' (312) 555.1212 ')
122
>>> f.clean('555-1212')
123
Traceback (most recent call last):
125
ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
126
>>> f.clean('312-55-1212')
127
Traceback (most recent call last):
129
ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
135
# USStateField ################################################################
137
USStateField validates that the data is either an abbreviation or name of a
139
>>> from django.contrib.localflavor.us.forms import USStateField
140
>>> f = USStateField()
145
>>> f.clean('illinois')
147
>>> f.clean(' illinois ')
150
Traceback (most recent call last):
152
ValidationError: [u'Enter a U.S. state or territory.']
154
Traceback (most recent call last):
156
ValidationError: [u'This field is required.']
158
Traceback (most recent call last):
160
ValidationError: [u'This field is required.']
162
>>> f = USStateField(required=False)
167
>>> f.clean('illinois')
169
>>> f.clean(' illinois ')
172
Traceback (most recent call last):
174
ValidationError: [u'Enter a U.S. state or territory.']
180
# USStateSelect ###############################################################
182
USStateSelect is a Select widget that uses a list of U.S. states/territories
184
>>> from django.contrib.localflavor.us.forms import USStateSelect
185
>>> w = USStateSelect()
186
>>> print w.render('state', 'IL')
187
<select name="state">
188
<option value="AL">Alabama</option>
189
<option value="AK">Alaska</option>
190
<option value="AS">American Samoa</option>
191
<option value="AZ">Arizona</option>
192
<option value="AR">Arkansas</option>
193
<option value="CA">California</option>
194
<option value="CO">Colorado</option>
195
<option value="CT">Connecticut</option>
196
<option value="DE">Delaware</option>
197
<option value="DC">District of Columbia</option>
198
<option value="FM">Federated States of Micronesia</option>
199
<option value="FL">Florida</option>
200
<option value="GA">Georgia</option>
201
<option value="GU">Guam</option>
202
<option value="HI">Hawaii</option>
203
<option value="ID">Idaho</option>
204
<option value="IL" selected="selected">Illinois</option>
205
<option value="IN">Indiana</option>
206
<option value="IA">Iowa</option>
207
<option value="KS">Kansas</option>
208
<option value="KY">Kentucky</option>
209
<option value="LA">Louisiana</option>
210
<option value="ME">Maine</option>
211
<option value="MH">Marshall Islands</option>
212
<option value="MD">Maryland</option>
213
<option value="MA">Massachusetts</option>
214
<option value="MI">Michigan</option>
215
<option value="MN">Minnesota</option>
216
<option value="MS">Mississippi</option>
217
<option value="MO">Missouri</option>
218
<option value="MT">Montana</option>
219
<option value="NE">Nebraska</option>
220
<option value="NV">Nevada</option>
221
<option value="NH">New Hampshire</option>
222
<option value="NJ">New Jersey</option>
223
<option value="NM">New Mexico</option>
224
<option value="NY">New York</option>
225
<option value="NC">North Carolina</option>
226
<option value="ND">North Dakota</option>
227
<option value="MP">Northern Mariana Islands</option>
228
<option value="OH">Ohio</option>
229
<option value="OK">Oklahoma</option>
230
<option value="OR">Oregon</option>
231
<option value="PW">Palau</option>
232
<option value="PA">Pennsylvania</option>
233
<option value="PR">Puerto Rico</option>
234
<option value="RI">Rhode Island</option>
235
<option value="SC">South Carolina</option>
236
<option value="SD">South Dakota</option>
237
<option value="TN">Tennessee</option>
238
<option value="TX">Texas</option>
239
<option value="UT">Utah</option>
240
<option value="VT">Vermont</option>
241
<option value="VI">Virgin Islands</option>
242
<option value="VA">Virginia</option>
243
<option value="WA">Washington</option>
244
<option value="WV">West Virginia</option>
245
<option value="WI">Wisconsin</option>
246
<option value="WY">Wyoming</option>
249
# USSocialSecurityNumberField #################################################
250
>>> from django.contrib.localflavor.us.forms import USSocialSecurityNumberField
251
>>> f = USSocialSecurityNumberField()
252
>>> f.clean('987-65-4330')
254
>>> f.clean('987654330')
256
>>> f.clean('078-05-1120')
257
Traceback (most recent call last):
259
ValidationError: [u'Enter a valid U.S. Social Security number in XXX-XX-XXXX format.']