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
72bdd0fc
Commit
72bdd0fc
authored
Sep 07, 2012
by
Tom Christie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add basic serializer tests
parent
a01d6153
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
120 additions
and
163 deletions
+120
-163
.travis.yml
+1
-1
djangorestframework/tests/renderers.py
+1
-1
djangorestframework/tests/serializer.py
+117
-161
docs/requirements.txt
+1
-0
No files found.
.travis.yml
View file @
72bdd0fc
...
@@ -12,7 +12,7 @@ env:
...
@@ -12,7 +12,7 @@ env:
install
:
install
:
-
pip install $DJANGO
-
pip install $DJANGO
-
pip install -e . --use-mirrors
-
pip install -e . --use-mirrors
-
pip install -r requirements.txt
-
pip install -r requirements.txt
--use-mirrors
-
pip install coverage==3.5.1 --use-mirrors
-
pip install coverage==3.5.1 --use-mirrors
script
:
script
:
...
...
djangorestframework/tests/renderers.py
View file @
72bdd0fc
...
@@ -54,7 +54,7 @@ class MockView(APIView):
...
@@ -54,7 +54,7 @@ class MockView(APIView):
renderers
=
(
RendererA
,
RendererB
)
renderers
=
(
RendererA
,
RendererB
)
def
get
(
self
,
request
,
**
kwargs
):
def
get
(
self
,
request
,
**
kwargs
):
response
=
Response
(
DUMMY
STATUS
,
DUMMYCONTENT
)
response
=
Response
(
DUMMY
CONTENT
,
status
=
DUMMYSTATUS
)
return
self
.
render
(
response
)
return
self
.
render
(
response
)
...
...
djangorestframework/tests/serializer.py
View file @
72bdd0fc
# """Tests for the resource module"""
import
datetime
# from django.db import models
from
django.test
import
TestCase
# from django.test import TestCase
from
djangorestframework
import
serializers
# from django.utils.translation import ugettext_lazy
# from djangorestframework.serializer import Serializer
class
Comment
(
object
):
# import datetime
def
__init__
(
self
,
email
,
content
,
created
):
# import decimal
self
.
email
=
email
self
.
content
=
content
self
.
created
=
created
or
datetime
.
datetime
.
now
()
# class TestObjectToData(TestCase):
# """
def
__eq__
(
self
,
other
):
# Tests for the Serializer class.
return
all
([
getattr
(
self
,
attr
)
==
getattr
(
other
,
attr
)
# """
for
attr
in
(
'email'
,
'content'
,
'created'
)])
# def setUp(self):
# self.serializer = Serializer()
class
CommentSerializer
(
serializers
.
Serializer
):
# self.serialize = self.serializer.serialize
email
=
serializers
.
EmailField
()
content
=
serializers
.
CharField
(
max_length
=
1000
)
# def test_decimal(self):
created
=
serializers
.
DateTimeField
()
# """Decimals need to be converted to a string representation."""
# self.assertEquals(self.serialize(decimal.Decimal('1.5')), decimal.Decimal('1.5'))
def
restore_object
(
self
,
data
,
instance
=
None
):
if
instance
is
None
:
# def test_function(self):
return
Comment
(
**
data
)
# """Functions with no arguments should be called."""
for
key
,
val
in
data
.
items
():
# def foo():
setattr
(
instance
,
key
,
val
)
# return 1
return
instance
# self.assertEquals(self.serialize(foo), 1)
# def test_method(self):
class
BasicTests
(
TestCase
):
# """Methods with only a ``self`` argument should be called."""
def
setUp
(
self
):
# class Foo(object):
self
.
comment
=
Comment
(
# def foo(self):
'tom@example.com'
,
# return 1
'Happy new year!'
,
# self.assertEquals(self.serialize(Foo().foo), 1)
datetime
.
datetime
(
2012
,
1
,
1
)
)
# def test_datetime(self):
self
.
data
=
{
# """datetime objects are left as-is."""
'email'
:
'tom@example.com'
,
# now = datetime.datetime.now()
'content'
:
'Happy new year!'
,
# self.assertEquals(self.serialize(now), now)
'created'
:
datetime
.
datetime
(
2012
,
1
,
1
)
}
# def test_dict_method_name_collision(self):
# """dict with key that collides with dict method name"""
def
test_empty
(
self
):
# self.assertEquals(self.serialize({'items': 'foo'}), {'items': u'foo'})
serializer
=
CommentSerializer
()
# self.assertEquals(self.serialize({'keys': 'foo'}), {'keys': u'foo'})
expected
=
{
# self.assertEquals(self.serialize({'values': 'foo'}), {'values': u'foo'})
'email'
:
''
,
'content'
:
''
,
# def test_ugettext_lazy(self):
'created'
:
None
# self.assertEquals(self.serialize(ugettext_lazy('foobar')), u'foobar')
}
self
.
assertEquals
(
serializer
.
data
,
expected
)
# class TestFieldNesting(TestCase):
def
test_serialization
(
self
):
# """
serializer
=
CommentSerializer
(
instance
=
self
.
comment
)
# Test nesting the fields in the Serializer class
expected
=
self
.
data
# """
self
.
assertEquals
(
serializer
.
data
,
expected
)
# def setUp(self):
# self.serializer = Serializer()
def
test_deserialization_for_create
(
self
):
# self.serialize = self.serializer.serialize
serializer
=
CommentSerializer
(
self
.
data
)
expected
=
self
.
comment
# class M1(models.Model):
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
# field1 = models.CharField(max_length=256)
self
.
assertEquals
(
serializer
.
object
,
expected
)
# field2 = models.CharField(max_length=256)
self
.
assertFalse
(
serializer
.
object
is
expected
)
# class M2(models.Model):
def
test_deserialization_for_update
(
self
):
# field = models.OneToOneField(M1)
serializer
=
CommentSerializer
(
self
.
data
,
instance
=
self
.
comment
)
expected
=
self
.
comment
# class M3(models.Model):
self
.
assertEquals
(
serializer
.
is_valid
(),
True
)
# field = models.ForeignKey(M1)
self
.
assertEquals
(
serializer
.
object
,
expected
)
self
.
assertTrue
(
serializer
.
object
is
expected
)
# self.m1 = M1(field1='foo', field2='bar')
# self.m2 = M2(field=self.m1)
# self.m3 = M3(field=self.m1)
class
ValidationTests
(
TestCase
):
def
setUp
(
self
):
self
.
comment
=
Comment
(
# def test_tuple_nesting(self):
'tom@example.com'
,
# """
'Happy new year!'
,
# Test tuple nesting on `fields` attr
datetime
.
datetime
(
2012
,
1
,
1
)
# """
)
# class SerializerM2(Serializer):
self
.
data
=
{
# fields = (('field', ('field1',)),)
'email'
:
'tom@example.com'
,
'content'
:
'x'
*
1001
,
# class SerializerM3(Serializer):
'created'
:
datetime
.
datetime
(
2012
,
1
,
1
)
# fields = (('field', ('field2',)),)
}
# self.assertEqual(SerializerM2().serialize(self.m2), {'field': {'field1': u'foo'}})
def
test_deserialization_for_create
(
self
):
# self.assertEqual(SerializerM3().serialize(self.m3), {'field': {'field2': u'bar'}})
serializer
=
CommentSerializer
(
self
.
data
)
self
.
assertEquals
(
serializer
.
is_valid
(),
False
)
self
.
assertEquals
(
serializer
.
errors
,
{
'content'
:
[
u'Ensure this value has at most 1000 characters (it has 1001).'
]})
# def test_serializer_class_nesting(self):
# """
def
test_deserialization_for_update
(
self
):
# Test related model serialization
serializer
=
CommentSerializer
(
self
.
data
,
instance
=
self
.
comment
)
# """
self
.
assertEquals
(
serializer
.
is_valid
(),
False
)
# class NestedM2(Serializer):
self
.
assertEquals
(
serializer
.
errors
,
{
'content'
:
[
u'Ensure this value has at most 1000 characters (it has 1001).'
]})
# fields = ('field1', )
# class NestedM3(Serializer):
class
MetadataTests
(
TestCase
):
# fields = ('field2', )
# def setUp(self):
# self.comment = Comment(
# class SerializerM2(Serializer):
# 'tomchristie',
# fields = [('field', NestedM2)]
# 'Happy new year!',
# datetime.datetime(2012, 1, 1)
# class SerializerM3(Serializer):
# )
# fields = [('field', NestedM3)]
# self.data = {
# 'email': 'tomchristie',
# self.assertEqual(SerializerM2().serialize(self.m2), {'field': {'field1': u'foo'}})
# 'content': 'Happy new year!',
# self.assertEqual(SerializerM3().serialize(self.m3), {'field': {'field2': u'bar'}})
# 'created': datetime.datetime(2012, 1, 1)
# }
# def test_serializer_no_fields(self):
# """
def
test_empty
(
self
):
# Test related serializer works when the fields attr isn't present. Fix for
serializer
=
CommentSerializer
()
# #178.
expected
=
{
# """
'email'
:
serializers
.
CharField
,
# class NestedM2(Serializer):
'content'
:
serializers
.
CharField
,
# fields = ('field1', )
'created'
:
serializers
.
DateTimeField
}
# class NestedM3(Serializer):
for
field_name
,
field
in
expected
.
items
():
# fields = ('field2', )
self
.
assertTrue
(
isinstance
(
serializer
.
data
.
fields
[
field_name
],
field
))
# class SerializerM2(Serializer):
# include = [('field', NestedM2)]
# exclude = ('id', )
# class SerializerM3(Serializer):
# fields = [('field', NestedM3)]
# self.assertEqual(SerializerM2().serialize(self.m2), {'field': {'field1': u'foo'}})
# self.assertEqual(SerializerM3().serialize(self.m3), {'field': {'field2': u'bar'}})
# def test_serializer_classname_nesting(self):
# """
# Test related model serialization
# """
# class SerializerM2(Serializer):
# fields = [('field', 'NestedM2')]
# class SerializerM3(Serializer):
# fields = [('field', 'NestedM3')]
# class NestedM2(Serializer):
# fields = ('field1', )
# class NestedM3(Serializer):
# fields = ('field2', )
# self.assertEqual(SerializerM2().serialize(self.m2), {'field': {'field1': u'foo'}})
# self.assertEqual(SerializerM3().serialize(self.m3), {'field': {'field2': u'bar'}})
# def test_serializer_overridden_hook_method(self):
# """
# Test serializing a model instance which overrides a class method on the
# serializer. Checks for correct behaviour in odd edge case.
# """
# class SerializerM2(Serializer):
# fields = ('overridden', )
# def overridden(self):
# return False
# self.m2.overridden = True
# self.assertEqual(SerializerM2().serialize_model(self.m2),
# {'overridden': True})
docs/requirements.txt
0 → 100644
View file @
72bdd0fc
markdown>=2.1.0
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