Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
f0071dbc
Commit
f0071dbc
authored
Jan 23, 2013
by
Stephan Groß
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add separate test for failed custom validation
parent
2250ab64
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
37 deletions
+59
-37
rest_framework/tests/serializer.py
+59
-37
No files found.
rest_framework/tests/serializer.py
View file @
f0071dbc
...
@@ -162,7 +162,6 @@ class BasicTests(TestCase):
...
@@ -162,7 +162,6 @@ class BasicTests(TestCase):
"""
"""
Attempting to update fields set as read_only should have no effect.
Attempting to update fields set as read_only should have no effect.
"""
"""
serializer
=
PersonSerializer
(
self
.
person
,
data
=
{
'name'
:
'dwight'
,
'age'
:
99
})
serializer
=
PersonSerializer
(
self
.
person
,
data
=
{
'name'
:
'dwight'
,
'age'
:
99
})
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
instance
=
serializer
.
save
()
instance
=
serializer
.
save
()
...
@@ -183,8 +182,7 @@ class ValidationTests(TestCase):
...
@@ -183,8 +182,7 @@ class ValidationTests(TestCase):
'content'
:
'x'
*
1001
,
'content'
:
'x'
*
1001
,
'created'
:
datetime
.
datetime
(
2012
,
1
,
1
)
'created'
:
datetime
.
datetime
(
2012
,
1
,
1
)
}
}
self
.
actionitem
=
ActionItem
(
title
=
'Some to do item'
,
self
.
actionitem
=
ActionItem
(
title
=
'Some to do item'
,)
)
def
test_create
(
self
):
def
test_create
(
self
):
serializer
=
CommentSerializer
(
data
=
self
.
data
)
serializer
=
CommentSerializer
(
data
=
self
.
data
)
...
@@ -216,39 +214,6 @@ class ValidationTests(TestCase):
...
@@ -216,39 +214,6 @@ class ValidationTests(TestCase):
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
self
.
assertEquals
(
serializer
.
errors
,
{})
self
.
assertEquals
(
serializer
.
errors
,
{})
def
test_field_validation
(
self
):
class
CommentSerializerWithFieldValidator
(
CommentSerializer
):
def
validate_content
(
self
,
attrs
,
source
):
value
=
attrs
[
source
]
if
"test"
not
in
value
:
raise
serializers
.
ValidationError
(
"Test not in value"
)
return
attrs
data
=
{
'email'
:
'tom@example.com'
,
'content'
:
'A test comment'
,
'created'
:
datetime
.
datetime
(
2012
,
1
,
1
)
}
serializer
=
CommentSerializerWithFieldValidator
(
data
=
data
)
self
.
assertTrue
(
serializer
.
is_valid
())
data
[
'content'
]
=
'This should not validate'
serializer
=
CommentSerializerWithFieldValidator
(
data
=
data
)
self
.
assertFalse
(
serializer
.
is_valid
())
self
.
assertEquals
(
serializer
.
errors
,
{
'content'
:
[
u'Test not in value'
]})
incomplete_data
=
{
'email'
:
'tom@example.com'
,
'created'
:
datetime
.
datetime
(
2012
,
1
,
1
)
}
serializer
=
CommentSerializerWithFieldValidator
(
data
=
incomplete_data
)
self
.
assertFalse
(
serializer
.
is_valid
())
self
.
assertEquals
(
serializer
.
errors
,
{
'content'
:
[
u'This field is required.'
]})
def
test_bad_type_data_is_false
(
self
):
def
test_bad_type_data_is_false
(
self
):
"""
"""
Data of the wrong type is not valid.
Data of the wrong type is not valid.
...
@@ -318,12 +283,69 @@ class ValidationTests(TestCase):
...
@@ -318,12 +283,69 @@ class ValidationTests(TestCase):
self
.
assertEquals
(
serializer
.
errors
,
{
'info'
:
[
u'Ensure this value has at most 12 characters (it has 13).'
]})
self
.
assertEquals
(
serializer
.
errors
,
{
'info'
:
[
u'Ensure this value has at most 12 characters (it has 13).'
]})
class
CustomValidationTests
(
TestCase
):
class
CommentSerializerWithFieldValidator
(
CommentSerializer
):
def
validate_email
(
self
,
attrs
,
source
):
value
=
attrs
[
source
]
return
attrs
def
validate_content
(
self
,
attrs
,
source
):
value
=
attrs
[
source
]
if
"test"
not
in
value
:
raise
serializers
.
ValidationError
(
"Test not in value"
)
return
attrs
def
test_field_validation
(
self
):
data
=
{
'email'
:
'tom@example.com'
,
'content'
:
'A test comment'
,
'created'
:
datetime
.
datetime
(
2012
,
1
,
1
)
}
serializer
=
self
.
CommentSerializerWithFieldValidator
(
data
=
data
)
self
.
assertTrue
(
serializer
.
is_valid
())
data
[
'content'
]
=
'This should not validate'
serializer
=
self
.
CommentSerializerWithFieldValidator
(
data
=
data
)
self
.
assertFalse
(
serializer
.
is_valid
())
self
.
assertEquals
(
serializer
.
errors
,
{
'content'
:
[
u'Test not in value'
]})
def
test_missing_data
(
self
):
"""
Make sure that validate_content isn't called if the field is missing
"""
incomplete_data
=
{
'email'
:
'tom@example.com'
,
'created'
:
datetime
.
datetime
(
2012
,
1
,
1
)
}
serializer
=
self
.
CommentSerializerWithFieldValidator
(
data
=
incomplete_data
)
self
.
assertFalse
(
serializer
.
is_valid
())
self
.
assertEquals
(
serializer
.
errors
,
{
'content'
:
[
u'This field is required.'
]})
def
test_wrong_data
(
self
):
"""
Make sure that validate_content isn't called if the field input is wrong
"""
wrong_data
=
{
'email'
:
'not an email'
,
'content'
:
'A test comment'
,
'created'
:
datetime
.
datetime
(
2012
,
1
,
1
)
}
serializer
=
self
.
CommentSerializerWithFieldValidator
(
data
=
wrong_data
)
self
.
assertFalse
(
serializer
.
is_valid
())
self
.
assertEquals
(
serializer
.
errors
,
{
'email'
:
[
u'Enter a valid e-mail address.'
]})
class
PositiveIntegerAsChoiceTests
(
TestCase
):
class
PositiveIntegerAsChoiceTests
(
TestCase
):
def
test_positive_integer_in_json_is_correctly_parsed
(
self
):
def
test_positive_integer_in_json_is_correctly_parsed
(
self
):
data
=
{
'some_integer'
:
1
}
data
=
{
'some_integer'
:
1
}
serializer
=
PositiveIntegerAsChoiceSerializer
(
data
=
data
)
serializer
=
PositiveIntegerAsChoiceSerializer
(
data
=
data
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
class
ModelValidationTests
(
TestCase
):
class
ModelValidationTests
(
TestCase
):
def
test_validate_unique
(
self
):
def
test_validate_unique
(
self
):
"""
"""
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment