-
-
Notifications
You must be signed in to change notification settings - Fork 31.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[1.2.X] Converted generic localflavor doctests to unittests. We have …
…always been at war with doctests. Thanks to Idan Gazit. Backport of [14940]. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14965 bcc190cf-cafb-0310-a4f2-bffc1f526a37
- Loading branch information
Showing
3 changed files
with
83 additions
and
158 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,163 +1,88 @@ | ||
# -*- coding: utf-8 -*- | ||
# Tests for the contrib/localflavor/ generic form fields. | ||
import datetime | ||
|
||
tests = r""" | ||
## Generic DateField ########################################################## | ||
from django.contrib.localflavor.generic.forms import DateField, DateTimeField | ||
|
||
>>> from django.contrib.localflavor.generic.forms import * | ||
from utils import LocalFlavorTestCase | ||
|
||
A DateField that uses generic dd/mm/yy dates instead of mm/dd/yy where | ||
appropriate. | ||
|
||
>>> import datetime | ||
>>> f = DateField() | ||
>>> f.clean(datetime.date(2006, 10, 25)) | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean('2006-10-25') | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean('25/10/2006') | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean('25/10/06') | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean('Oct 25 2006') | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean('October 25 2006') | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean('October 25, 2006') | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean('25 October 2006') | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean('25 October, 2006') | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean('2006-4-31') | ||
Traceback (most recent call last): | ||
... | ||
ValidationError: [u'Enter a valid date.'] | ||
>>> f.clean('200a-10-25') | ||
Traceback (most recent call last): | ||
... | ||
ValidationError: [u'Enter a valid date.'] | ||
>>> f.clean('10/25/06') | ||
Traceback (most recent call last): | ||
... | ||
ValidationError: [u'Enter a valid date.'] | ||
>>> f.clean(None) | ||
Traceback (most recent call last): | ||
... | ||
ValidationError: [u'This field is required.'] | ||
class GenericLocalFlavorTests(LocalFlavorTestCase): | ||
def test_GenericDateField(self): | ||
error_invalid = [u'Enter a valid date.'] | ||
valid = { | ||
datetime.date(2006, 10, 25): datetime.date(2006, 10, 25), | ||
datetime.datetime(2006, 10, 25, 14, 30): datetime.date(2006, 10, 25), | ||
datetime.datetime(2006, 10, 25, 14, 30, 59): datetime.date(2006, 10, 25), | ||
datetime.datetime(2006, 10, 25, 14, 30, 59, 200): datetime.date(2006, 10, 25), | ||
'2006-10-25': datetime.date(2006, 10, 25), | ||
'25/10/2006': datetime.date(2006, 10, 25), | ||
'25/10/06': datetime.date(2006, 10, 25), | ||
'Oct 25 2006': datetime.date(2006, 10, 25), | ||
'October 25 2006': datetime.date(2006, 10, 25), | ||
'October 25, 2006': datetime.date(2006, 10, 25), | ||
'25 October 2006': datetime.date(2006, 10, 25), | ||
'25 October, 2006': datetime.date(2006, 10, 25), | ||
} | ||
invalid = { | ||
'2006-4-31': error_invalid, | ||
'200a-10-25': error_invalid, | ||
'10/25/06': error_invalid, | ||
} | ||
self.assertFieldOutput(DateField, valid, invalid, empty_value=None) | ||
|
||
>>> f = DateField(required=False) | ||
>>> f.clean(None) | ||
>>> repr(f.clean(None)) | ||
'None' | ||
>>> f.clean('') | ||
>>> repr(f.clean('')) | ||
'None' | ||
# DateField with optional input_formats parameter | ||
valid = { | ||
datetime.date(2006, 10, 25): datetime.date(2006, 10, 25), | ||
datetime.datetime(2006, 10, 25, 14, 30): datetime.date(2006, 10, 25), | ||
'2006 10 25': datetime.date(2006, 10, 25), | ||
} | ||
invalid = { | ||
'2006-10-25': error_invalid, | ||
'25/10/2006': error_invalid, | ||
'25/10/06': error_invalid, | ||
} | ||
kwargs = {'input_formats':['%Y %m %d'],} | ||
self.assertFieldOutput(DateField, | ||
valid, invalid, field_kwargs=kwargs, empty_value=None | ||
) | ||
|
||
DateField accepts an optional input_formats parameter: | ||
>>> f = DateField(input_formats=['%Y %m %d']) | ||
>>> f.clean(datetime.date(2006, 10, 25)) | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) | ||
datetime.date(2006, 10, 25) | ||
>>> f.clean('2006 10 25') | ||
datetime.date(2006, 10, 25) | ||
def test_GenericDateTimeField(self): | ||
error_invalid = [u'Enter a valid date/time.'] | ||
valid = { | ||
datetime.date(2006, 10, 25): datetime.datetime(2006, 10, 25, 0, 0), | ||
datetime.datetime(2006, 10, 25, 14, 30): datetime.datetime(2006, 10, 25, 14, 30), | ||
datetime.datetime(2006, 10, 25, 14, 30, 59): datetime.datetime(2006, 10, 25, 14, 30, 59), | ||
datetime.datetime(2006, 10, 25, 14, 30, 59, 200): datetime.datetime(2006, 10, 25, 14, 30, 59, 200), | ||
'2006-10-25 14:30:45': datetime.datetime(2006, 10, 25, 14, 30, 45), | ||
'2006-10-25 14:30:00': datetime.datetime(2006, 10, 25, 14, 30), | ||
'2006-10-25 14:30': datetime.datetime(2006, 10, 25, 14, 30), | ||
'2006-10-25': datetime.datetime(2006, 10, 25, 0, 0), | ||
'25/10/2006 14:30:45': datetime.datetime(2006, 10, 25, 14, 30, 45), | ||
'25/10/2006 14:30:00': datetime.datetime(2006, 10, 25, 14, 30), | ||
'25/10/2006 14:30': datetime.datetime(2006, 10, 25, 14, 30), | ||
'25/10/2006': datetime.datetime(2006, 10, 25, 0, 0), | ||
'25/10/06 14:30:45': datetime.datetime(2006, 10, 25, 14, 30, 45), | ||
'25/10/06 14:30:00': datetime.datetime(2006, 10, 25, 14, 30), | ||
'25/10/06 14:30': datetime.datetime(2006, 10, 25, 14, 30), | ||
'25/10/06': datetime.datetime(2006, 10, 25, 0, 0), | ||
} | ||
invalid = { | ||
'hello': error_invalid, | ||
'2006-10-25 4:30 p.m.': error_invalid, | ||
} | ||
self.assertFieldOutput(DateTimeField, valid, invalid, empty_value=None) | ||
|
||
The input_formats parameter overrides all default input formats, | ||
so the default formats won't work unless you specify them: | ||
>>> f.clean('2006-10-25') | ||
Traceback (most recent call last): | ||
... | ||
ValidationError: [u'Enter a valid date.'] | ||
>>> f.clean('25/10/2006') | ||
Traceback (most recent call last): | ||
... | ||
ValidationError: [u'Enter a valid date.'] | ||
>>> f.clean('25/10/06') | ||
Traceback (most recent call last): | ||
... | ||
ValidationError: [u'Enter a valid date.'] | ||
## Generic DateTimeField ###################################################### | ||
A DateField that uses generic dd/mm/yy dates instead of mm/dd/yy where | ||
appropriate. | ||
>>> import datetime | ||
>>> f = DateTimeField() | ||
>>> f.clean(datetime.date(2006, 10, 25)) | ||
datetime.datetime(2006, 10, 25, 0, 0) | ||
>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) | ||
datetime.datetime(2006, 10, 25, 14, 30) | ||
>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) | ||
datetime.datetime(2006, 10, 25, 14, 30, 59) | ||
>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) | ||
datetime.datetime(2006, 10, 25, 14, 30, 59, 200) | ||
>>> f.clean('2006-10-25 14:30:45') | ||
datetime.datetime(2006, 10, 25, 14, 30, 45) | ||
>>> f.clean('2006-10-25 14:30:00') | ||
datetime.datetime(2006, 10, 25, 14, 30) | ||
>>> f.clean('2006-10-25 14:30') | ||
datetime.datetime(2006, 10, 25, 14, 30) | ||
>>> f.clean('2006-10-25') | ||
datetime.datetime(2006, 10, 25, 0, 0) | ||
>>> f.clean('25/10/2006 14:30:45') | ||
datetime.datetime(2006, 10, 25, 14, 30, 45) | ||
>>> f.clean('25/10/2006 14:30:00') | ||
datetime.datetime(2006, 10, 25, 14, 30) | ||
>>> f.clean('25/10/2006 14:30') | ||
datetime.datetime(2006, 10, 25, 14, 30) | ||
>>> f.clean('25/10/2006') | ||
datetime.datetime(2006, 10, 25, 0, 0) | ||
>>> f.clean('25/10/06 14:30:45') | ||
datetime.datetime(2006, 10, 25, 14, 30, 45) | ||
>>> f.clean('25/10/06 14:30:00') | ||
datetime.datetime(2006, 10, 25, 14, 30) | ||
>>> f.clean('25/10/06 14:30') | ||
datetime.datetime(2006, 10, 25, 14, 30) | ||
>>> f.clean('25/10/06') | ||
datetime.datetime(2006, 10, 25, 0, 0) | ||
>>> f.clean('hello') | ||
Traceback (most recent call last): | ||
... | ||
ValidationError: [u'Enter a valid date/time.'] | ||
>>> f.clean('2006-10-25 4:30 p.m.') | ||
Traceback (most recent call last): | ||
... | ||
ValidationError: [u'Enter a valid date/time.'] | ||
DateField accepts an optional input_formats parameter: | ||
>>> f = DateTimeField(input_formats=['%Y %m %d %I:%M %p']) | ||
>>> f.clean(datetime.date(2006, 10, 25)) | ||
datetime.datetime(2006, 10, 25, 0, 0) | ||
>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) | ||
datetime.datetime(2006, 10, 25, 14, 30) | ||
>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) | ||
datetime.datetime(2006, 10, 25, 14, 30, 59) | ||
>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) | ||
datetime.datetime(2006, 10, 25, 14, 30, 59, 200) | ||
>>> f.clean('2006 10 25 2:30 PM') | ||
datetime.datetime(2006, 10, 25, 14, 30) | ||
The input_formats parameter overrides all default input formats, | ||
so the default formats won't work unless you specify them: | ||
>>> f.clean('2006-10-25 14:30:45') | ||
Traceback (most recent call last): | ||
... | ||
ValidationError: [u'Enter a valid date/time.'] | ||
>>> f = DateTimeField(required=False) | ||
>>> f.clean(None) | ||
>>> repr(f.clean(None)) | ||
'None' | ||
>>> f.clean('') | ||
>>> repr(f.clean('')) | ||
'None' | ||
""" | ||
# DateTimeField with optional input_formats paramter | ||
valid = { | ||
datetime.date(2006, 10, 25): datetime.datetime(2006, 10, 25, 0, 0), | ||
datetime.datetime(2006, 10, 25, 14, 30): datetime.datetime(2006, 10, 25, 14, 30), | ||
datetime.datetime(2006, 10, 25, 14, 30, 59): datetime.datetime(2006, 10, 25, 14, 30, 59), | ||
datetime.datetime(2006, 10, 25, 14, 30, 59, 200): datetime.datetime(2006, 10, 25, 14, 30, 59, 200), | ||
'2006 10 25 2:30 PM': datetime.datetime(2006, 10, 25, 14, 30), | ||
} | ||
invalid = { | ||
'2006-10-25 14:30:45': error_invalid, | ||
} | ||
kwargs = {'input_formats':['%Y %m %d %I:%M %p'],} | ||
self.assertFieldOutput(DateTimeField, | ||
valid, invalid, field_kwargs=kwargs, empty_value=None | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,4 +24,5 @@ | |
ESLocalFlavorTests, | ||
FILocalFlavorTests, | ||
FRLocalFlavorTests, | ||
GenericLocalFlavorTests, | ||
) |