aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_fields.py
diff options
context:
space:
mode:
authorTom Christie2014-09-22 13:26:47 +0100
committerTom Christie2014-09-22 13:26:47 +0100
commitafb3f8ab0ad6c33b147292e9777ba0ddf3871d14 (patch)
treedf8e6a794f991a9b49dabcf526b6a1926acea8c6 /tests/test_fields.py
parentaf46fd6b00f1d7f018049c19094af58acb1415fb (diff)
downloaddjango-rest-framework-afb3f8ab0ad6c33b147292e9777ba0ddf3871d14.tar.bz2
Tests and tweaks for text fields
Diffstat (limited to 'tests/test_fields.py')
-rw-r--r--tests/test_fields.py93
1 files changed, 83 insertions, 10 deletions
diff --git a/tests/test_fields.py b/tests/test_fields.py
index 6ec18041..ae7f1919 100644
--- a/tests/test_fields.py
+++ b/tests/test_fields.py
@@ -26,16 +26,7 @@ class ValidAndInvalidValues:
assert exc_info.value.messages == expected_failure
-class TestCharField(ValidAndInvalidValues):
- valid_mappings = {
- 1: '1',
- 'abc': 'abc'
- }
- invalid_mappings = {
- '': ['This field may not be blank.']
- }
- field = fields.CharField()
-
+# Boolean types...
class TestBooleanField(ValidAndInvalidValues):
valid_mappings = {
@@ -54,6 +45,60 @@ class TestBooleanField(ValidAndInvalidValues):
field = fields.BooleanField()
+# String types...
+
+class TestCharField(ValidAndInvalidValues):
+ valid_mappings = {
+ 1: '1',
+ 'abc': 'abc'
+ }
+ invalid_mappings = {
+ '': ['This field may not be blank.']
+ }
+ field = fields.CharField()
+
+
+class TestEmailField(ValidAndInvalidValues):
+ valid_mappings = {
+ 'example@example.com': 'example@example.com',
+ ' example@example.com ': 'example@example.com',
+ }
+ invalid_mappings = {
+ 'example.com': ['Enter a valid email address.']
+ }
+ field = fields.EmailField()
+
+
+class TestRegexField(ValidAndInvalidValues):
+ valid_mappings = {
+ 'a9': 'a9',
+ }
+ invalid_mappings = {
+ 'A9': ["This value does not match the required pattern."]
+ }
+ field = fields.RegexField(regex='[a-z][0-9]')
+
+
+class TestSlugField(ValidAndInvalidValues):
+ valid_mappings = {
+ 'slug-99': 'slug-99',
+ }
+ invalid_mappings = {
+ 'slug 99': ["Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."]
+ }
+ field = fields.SlugField()
+
+
+class TestURLField(ValidAndInvalidValues):
+ valid_mappings = {
+ 'http://example.com': 'http://example.com',
+ }
+ invalid_mappings = {
+ 'example.com': ['Enter a valid URL.']
+ }
+ field = fields.URLField()
+
+
# Number types...
class TestIntegerField(ValidAndInvalidValues):
@@ -249,6 +294,34 @@ class TestNaiveDateTimeField(ValidAndInvalidValues):
field = fields.DateTimeField(default_timezone=None)
+class TestTimeField(ValidAndInvalidValues):
+ """
+ Valid and invalid values for `TimeField`.
+ """
+ valid_mappings = {
+ '13:00': datetime.time(13, 00),
+ datetime.time(13, 00): datetime.time(13, 00),
+ }
+ invalid_mappings = {
+ 'abc': ['Time has wrong format. Use one of these formats instead: hh:mm[:ss[.uuuuuu]]'],
+ '99:99': ['Time has wrong format. Use one of these formats instead: hh:mm[:ss[.uuuuuu]]'],
+ }
+ field = fields.TimeField()
+
+
+class TestCustomInputFormatTimeField(ValidAndInvalidValues):
+ """
+ Valid and invalid values for `TimeField` with a custom input format.
+ """
+ valid_mappings = {
+ '1:00pm': datetime.time(13, 00),
+ }
+ invalid_mappings = {
+ '13:00': ['Time has wrong format. Use one of these formats instead: hh:mm[AM|PM]'],
+ }
+ field = fields.TimeField(input_formats=['%I:%M%p'])
+
+
# Choice types...
class TestChoiceField(ValidAndInvalidValues):