aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests
diff options
context:
space:
mode:
authorBen Roberts2012-12-05 17:43:47 -0700
committerBen Roberts2012-12-05 17:43:47 -0700
commit705c7ad09db65c6ea6fb69bbd417cb7a45f6e3b9 (patch)
treed4c804bb98828bef6984adcd7a07a58644a9021f /rest_framework/tests
parent3868241f6acda96fbd08cc81211b09ffbc2f38b3 (diff)
downloaddjango-rest-framework-705c7ad09db65c6ea6fb69bbd417cb7a45f6e3b9.tar.bz2
added tests and fix for unpickleable metadata in SortedDictWithMetadata
Diffstat (limited to 'rest_framework/tests')
-rw-r--r--rest_framework/tests/serializer.py47
1 files changed, 45 insertions, 2 deletions
diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py
index 61a05da1..af182917 100644
--- a/rest_framework/tests/serializer.py
+++ b/rest_framework/tests/serializer.py
@@ -1,9 +1,9 @@
-import datetime
+import datetime, pickle
from django.test import TestCase
from rest_framework import serializers
from rest_framework.tests.models import (ActionItem, Anchor, BasicModel,
BlankFieldModel, BlogPost, Book, CallableDefaultValueModel, DefaultValueModel,
- ManyToManyModel, Person, ReadOnlyManyToManyModel)
+ ManyToManyModel, Person, ReadOnlyManyToManyModel, BlogPostComment)
class SubComment(object):
@@ -641,3 +641,46 @@ class BlankFieldTests(TestCase):
"""
serializer = self.not_blank_model_serializer_class(data=self.data)
self.assertEquals(serializer.is_valid(), False)
+
+
+#class PersonGroup(object):
+# name = "group"
+# persons = [Person(name="joe"), Person(name="job")]
+#
+#class PersonGroupSerializer(serializers.Serializer):
+# name = serializers.CharField()
+# persons = PersonSerializer()
+#
+#class BlogPostSerializer(serializers.ModelSerializer):
+# class Meta:
+# model = BlogPost
+#
+#
+#class BlogPostCommentSerializer(serializers.ModelSerializer):
+# class Meta:
+# model = BlogPostComment
+# fields = ('text', 'blog_post')
+#
+# blog_post = BlogPostSerializer()
+#
+
+#test for issue #460
+class SerializerPickleTests(TestCase):
+ """ Test pickleability of the output of Serializers
+ """
+ def test_pickle_simple_model_serializer_data(self):
+ """ Test simple serializer
+ """
+ pickle.dumps(PersonSerializer(Person(name="Methusela", age=969)).data)
+
+
+ def test_pickle_inner_serializer(self):
+ """ Test pickling a serializer whose resulting .data (a SortedDictWithMetadata) will
+ have unpickleable meta data--in order to make sure metadata doesn't get pulled into the pickle.
+ See DictWithMetadata.__getstate__
+ """
+ class InnerPersonSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = Person
+ fields = ('name', 'age')
+ pickle.dumps(InnerPersonSerializer(Person(name="Noah", age=950)).data)