1
# -*- coding: utf-8 -*-
2
# Tests for the contrib/localflavor/ ES form fields.
5
# ESPostalCodeField ##############################################################
7
ESPostalCodeField validates that data is a five-digit spanish postal code.
8
>>> from django.contrib.localflavor.es.forms import ESPostalCodeField
9
>>> f = ESPostalCodeField()
15
Traceback (most recent call last):
17
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
19
Traceback (most recent call last):
21
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
23
Traceback (most recent call last):
25
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
27
Traceback (most recent call last):
29
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
31
Traceback (most recent call last):
33
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
35
Traceback (most recent call last):
37
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
39
Traceback (most recent call last):
41
ValidationError: [u'This field is required.']
43
>>> f = ESPostalCodeField(required=False)
49
Traceback (most recent call last):
51
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
53
Traceback (most recent call last):
55
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
57
Traceback (most recent call last):
59
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
61
Traceback (most recent call last):
63
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
65
Traceback (most recent call last):
67
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
69
Traceback (most recent call last):
71
ValidationError: [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
75
# ESPhoneNumberField ##############################################################
77
ESPhoneNumberField validates that data is a nine-digit spanish phone number.
78
>>> from django.contrib.localflavor.es.forms import ESPhoneNumberField
79
>>> f = ESPhoneNumberField()
80
>>> f.clean('650010101')
82
>>> f.clean('931234567')
84
>>> f.clean('800123123')
86
>>> f.clean('555555555')
87
Traceback (most recent call last):
89
ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
90
>>> f.clean('789789789')
91
Traceback (most recent call last):
93
ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
94
>>> f.clean('99123123')
95
Traceback (most recent call last):
97
ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
98
>>> f.clean('9999123123')
99
Traceback (most recent call last):
101
ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
103
Traceback (most recent call last):
105
ValidationError: [u'This field is required.']
107
>>> f = ESPhoneNumberField(required=False)
108
>>> f.clean('650010101')
110
>>> f.clean('931234567')
112
>>> f.clean('800123123')
114
>>> f.clean('555555555')
115
Traceback (most recent call last):
117
ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
118
>>> f.clean('789789789')
119
Traceback (most recent call last):
121
ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
122
>>> f.clean('99123123')
123
Traceback (most recent call last):
125
ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
126
>>> f.clean('9999123123')
127
Traceback (most recent call last):
129
ValidationError: [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
133
# ESIdentityCardNumberField ##############################################################
135
ESIdentityCardNumberField validates that data is a identification spanish code for companies or individuals (CIF, NIF or NIE).
136
>>> from django.contrib.localflavor.es.forms import ESIdentityCardNumberField
137
>>> f = ESIdentityCardNumberField()
138
>>> f.clean('78699688J')
140
>>> f.clean('78699688-J')
142
>>> f.clean('78699688 J')
144
>>> f.clean('78699688 j')
146
>>> f.clean('78699688T')
147
Traceback (most recent call last):
149
ValidationError: [u'Invalid checksum for NIF.']
150
>>> f.clean('X0901797J')
152
>>> f.clean('X-6124387-Q')
154
>>> f.clean('X 0012953 G')
156
>>> f.clean('x-3287690-r')
158
>>> f.clean('t-03287690r')
160
>>> f.clean('X-03287690')
161
Traceback (most recent call last):
163
ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
164
>>> f.clean('X-03287690-T')
165
Traceback (most recent call last):
167
ValidationError: [u'Invalid checksum for NIE.']
168
>>> f.clean('B38790911')
170
>>> f.clean('B31234560')
172
>>> f.clean('B-3879091A')
174
>>> f.clean('B 38790917')
175
Traceback (most recent call last):
177
ValidationError: [u'Invalid checksum for CIF.']
178
>>> f.clean('B 38790911')
180
>>> f.clean('P-3900800-H')
182
>>> f.clean('P 39008008')
184
>>> f.clean('C-28795565')
186
>>> f.clean('C 2879556E')
188
>>> f.clean('C28795567')
189
Traceback (most recent call last):
191
ValidationError: [u'Invalid checksum for CIF.']
192
>>> f.clean('I38790911')
193
Traceback (most recent call last):
195
ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
196
>>> f.clean('78699688-2')
197
Traceback (most recent call last):
199
ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
201
Traceback (most recent call last):
203
ValidationError: [u'This field is required.']
205
>>> f = ESIdentityCardNumberField(required=False)
206
>>> f.clean('78699688J')
208
>>> f.clean('78699688-J')
210
>>> f.clean('78699688 J')
212
>>> f.clean('78699688 j')
214
>>> f.clean('78699688T')
215
Traceback (most recent call last):
217
ValidationError: [u'Invalid checksum for NIF.']
218
>>> f.clean('X0901797J')
220
>>> f.clean('X-6124387-Q')
222
>>> f.clean('X 0012953 G')
224
>>> f.clean('x-3287690-r')
226
>>> f.clean('t-03287690r')
228
>>> f.clean('X-03287690')
229
Traceback (most recent call last):
231
ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
232
>>> f.clean('X-03287690-T')
233
Traceback (most recent call last):
235
ValidationError: [u'Invalid checksum for NIE.']
236
>>> f.clean('B38790911')
238
>>> f.clean('B-3879091A')
240
>>> f.clean('B 38790917')
241
Traceback (most recent call last):
243
ValidationError: [u'Invalid checksum for CIF.']
244
>>> f.clean('B 38790911')
246
>>> f.clean('P-3900800-H')
248
>>> f.clean('P 39008008')
250
>>> f.clean('C-28795565')
252
>>> f.clean('C 2879556E')
254
>>> f.clean('C28795567')
255
Traceback (most recent call last):
257
ValidationError: [u'Invalid checksum for CIF.']
258
>>> f.clean('I38790911')
259
Traceback (most recent call last):
261
ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
262
>>> f.clean('78699688-2')
263
Traceback (most recent call last):
265
ValidationError: [u'Please enter a valid NIF, NIE, or CIF.']
269
# ESCCCField ##############################################################
271
ESCCCField validates that data is a spanish bank account number (codigo cuenta cliente).
273
>>> from django.contrib.localflavor.es.forms import ESCCCField
275
>>> f.clean('20770338793100254321')
276
'20770338793100254321'
277
>>> f.clean('2077 0338 79 3100254321')
278
'2077 0338 79 3100254321'
279
>>> f.clean('2077-0338-79-3100254321')
280
'2077-0338-79-3100254321'
281
>>> f.clean('2077.0338.79.3100254321')
282
Traceback (most recent call last):
284
ValidationError: [u'Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.']
285
>>> f.clean('2077-0338-78-3100254321')
286
Traceback (most recent call last):
288
ValidationError: [u'Invalid checksum for bank account number.']
289
>>> f.clean('2077-0338-89-3100254321')
290
Traceback (most recent call last):
292
ValidationError: [u'Invalid checksum for bank account number.']
293
>>> f.clean('2077-03-3879-3100254321')
294
Traceback (most recent call last):
296
ValidationError: [u'Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.']
298
Traceback (most recent call last):
300
ValidationError: [u'This field is required.']
302
>>> f = ESCCCField(required=False)
303
>>> f.clean('20770338793100254321')
304
'20770338793100254321'
305
>>> f.clean('2077 0338 79 3100254321')
306
'2077 0338 79 3100254321'
307
>>> f.clean('2077-0338-79-3100254321')
308
'2077-0338-79-3100254321'
309
>>> f.clean('2077.0338.79.3100254321')
310
Traceback (most recent call last):
312
ValidationError: [u'Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.']
313
>>> f.clean('2077-0338-78-3100254321')
314
Traceback (most recent call last):
316
ValidationError: [u'Invalid checksum for bank account number.']
317
>>> f.clean('2077-0338-89-3100254321')
318
Traceback (most recent call last):
320
ValidationError: [u'Invalid checksum for bank account number.']
321
>>> f.clean('2077-03-3879-3100254321')
322
Traceback (most recent call last):
324
ValidationError: [u'Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.']
328
# ESRegionSelect ##############################################################
330
ESRegionSelect is a Select widget that uses a list of Spain regions as its choices.
331
>>> from django.contrib.localflavor.es.forms import ESRegionSelect
332
>>> w = ESRegionSelect()
333
>>> w.render('regions', 'CT')
334
u'<select name="regions">\n<option value="AN">Andalusia</option>\n<option value="AR">Aragon</option>\n<option value="O">Principality of Asturias</option>\n<option value="IB">Balearic Islands</option>\n<option value="PV">Basque Country</option>\n<option value="CN">Canary Islands</option>\n<option value="S">Cantabria</option>\n<option value="CM">Castile-La Mancha</option>\n<option value="CL">Castile and Leon</option>\n<option value="CT" selected="selected">Catalonia</option>\n<option value="EX">Extremadura</option>\n<option value="GA">Galicia</option>\n<option value="LO">La Rioja</option>\n<option value="M">Madrid</option>\n<option value="MU">Region of Murcia</option>\n<option value="NA">Foral Community of Navarre</option>\n<option value="VC">Valencian Community</option>\n</select>'
336
# ESProvincenSelect ##############################################################
338
ESProvinceSelect is a Select widget that uses a list of Spain provinces as its choices.
339
>>> from django.contrib.localflavor.es.forms import ESProvinceSelect
340
>>> w = ESProvinceSelect()
341
>>> w.render('provinces', '08')
342
u'<select name="provinces">\n<option value="01">Arava</option>\n<option value="02">Albacete</option>\n<option value="03">Alacant</option>\n<option value="04">Almeria</option>\n<option value="05">Avila</option>\n<option value="06">Badajoz</option>\n<option value="07">Illes Balears</option>\n<option value="08" selected="selected">Barcelona</option>\n<option value="09">Burgos</option>\n<option value="10">Caceres</option>\n<option value="11">Cadiz</option>\n<option value="12">Castello</option>\n<option value="13">Ciudad Real</option>\n<option value="14">Cordoba</option>\n<option value="15">A Coruna</option>\n<option value="16">Cuenca</option>\n<option value="17">Girona</option>\n<option value="18">Granada</option>\n<option value="19">Guadalajara</option>\n<option value="20">Guipuzkoa</option>\n<option value="21">Huelva</option>\n<option value="22">Huesca</option>\n<option value="23">Jaen</option>\n<option value="24">Leon</option>\n<option value="25">Lleida</option>\n<option value="26">La Rioja</option>\n<option value="27">Lugo</option>\n<option value="28">Madrid</option>\n<option value="29">Malaga</option>\n<option value="30">Murcia</option>\n<option value="31">Navarre</option>\n<option value="32">Ourense</option>\n<option value="33">Asturias</option>\n<option value="34">Palencia</option>\n<option value="35">Las Palmas</option>\n<option value="36">Pontevedra</option>\n<option value="37">Salamanca</option>\n<option value="38">Santa Cruz de Tenerife</option>\n<option value="39">Cantabria</option>\n<option value="40">Segovia</option>\n<option value="41">Seville</option>\n<option value="42">Soria</option>\n<option value="43">Tarragona</option>\n<option value="44">Teruel</option>\n<option value="45">Toledo</option>\n<option value="46">Valencia</option>\n<option value="47">Valladolid</option>\n<option value="48">Bizkaia</option>\n<option value="49">Zamora</option>\n<option value="50">Zaragoza</option>\n<option value="51">Ceuta</option>\n<option value="52">Melilla</option>\n</select>'