more testing

This commit is contained in:
Warren Jin 2015-01-25 22:33:58 -05:00
parent 7113a120bf
commit 2e8e9b8f4c

View File

@ -294,19 +294,20 @@ class TestCreateOnlyDefault:
# Tests for RecursiveField.
# -------------------------
class TestRecursiveField:
def setup(self):
class ListSerializer(serializers.Serializer):
class LinkSerializer(serializers.Serializer):
name = serializers.CharField()
next = serializers.RecursiveField(allow_null=True)
self.list_serializer = ListSerializer
self.link_serializer = LinkSerializer
class TreeSerializer(serializers.Serializer):
class NodeSerializer(serializers.Serializer):
name = serializers.CharField()
children = serializers.ListField(child=serializers.RecursiveField())
self.tree_serializer = TreeSerializer
self.node_serializer = NodeSerializer
def test_serialize_list(self):
def test_link_serializer(self):
value = {
'name': 'first',
'next': {
@ -318,8 +319,42 @@ class TestRecursiveField:
}
}
serializer = self.list_serializer(value)
assert serializer.data == value
# test serialization
serializer = self.link_serializer(value)
assert serializer.data == value, \
'serialized data does not match input'
# test deserialization
serializer = self.link_serializer(data=value)
assert serializer.is_valid(), \
'cannot validate on deserialization'
assert serializer.validated_data == value, \
'deserialized data does not match input'
def test_node_serializer(self):
value = {
'name': 'root',
'children': [{
'name': 'first child',
'children': [],
},{
'name': 'second child',
'children': [],
}]
}
# serialization
serializer = self.node_serializer(value)
assert serializer.data == value, \
'serialized data does not match input'
# deserialization
serializer = self.link_serializer(data=value)
assert serializer.is_valid(), \
'cannot validate on deserialization'
assert serializer.validated_data == value, \
'deserialized data does not match input'
# Tests for field input and output values.
# ----------------------------------------