aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests
diff options
context:
space:
mode:
authorTom Christie2012-12-06 14:54:28 -0800
committerTom Christie2012-12-06 14:54:28 -0800
commit6ffcd7ba36c95c7398df2b5427eaef15ee1965a2 (patch)
treed05efa9deb50c5392efe0cd8848cab719eb95760 /rest_framework/tests
parent6a5f4f2a90ab19a8586a9d762c9b2618e8db5c30 (diff)
parentcb7d9ea5c9843ffa99db4400670a11c3651520cc (diff)
downloaddjango-rest-framework-6ffcd7ba36c95c7398df2b5427eaef15ee1965a2.tar.bz2
Merge pull request #477 from roberts81/master
Fix for #460
Diffstat (limited to 'rest_framework/tests')
-rw-r--r--rest_framework/tests/serializer.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py
index 26a7d6bf..6aa211f4 100644
--- a/rest_framework/tests/serializer.py
+++ b/rest_framework/tests/serializer.py
@@ -1,4 +1,4 @@
-import datetime
+import datetime, pickle
from django.test import TestCase
from rest_framework import serializers
from rest_framework.tests.models import (ActionItem, Anchor, BasicModel,
@@ -682,3 +682,27 @@ class BlankFieldTests(TestCase):
"""
serializer = self.not_blank_model_serializer_class(data=self.data)
self.assertEquals(serializer.is_valid(), False)
+
+
+#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)