summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBoulder Sprinters <boulder-sprinters@djangoproject.com>2007-06-04 16:12:35 +0000
committerBoulder Sprinters <boulder-sprinters@djangoproject.com>2007-06-04 16:12:35 +0000
commitfe8c54a62a43b08b10ba343603d2b80e54d320b9 (patch)
tree625342d42b88fe4a20d11e80a38dfaf1b261a0f2 /tests
parent4365d6d086efaf8e8fe2a060be869c3313a356b5 (diff)
boulder-oracle-sprint: Merged to [5421]
git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@5422 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/modeltests/serializers/models.py4
-rw-r--r--tests/regressiontests/serializers_regress/models.py4
-rw-r--r--tests/regressiontests/serializers_regress/tests.py37
3 files changed, 45 insertions, 0 deletions
diff --git a/tests/modeltests/serializers/models.py b/tests/modeltests/serializers/models.py
index 339303fc0a..8d44d5eae7 100644
--- a/tests/modeltests/serializers/models.py
+++ b/tests/modeltests/serializers/models.py
@@ -159,4 +159,8 @@ __test__ = {'API_TESTS':"""
>>> article.author
<Author: Agnes>
+# Serializer output can be restricted to a subset of fields
+>>> print serializers.serialize("json", Article.objects.all(), fields=('headline','pub_date'))
+[{"pk": "1", "model": "serializers.article", "fields": {"headline": "Just kidding; I love TV poker", "pub_date": "2006-06-16 11:00:00"}}, {"pk": "2", "model": "serializers.article", "fields": {"headline": "Time to reform copyright", "pub_date": "2006-06-16 13:00:00"}}, {"pk": "3", "model": "serializers.article", "fields": {"headline": "Forward references pose no problem", "pub_date": "2006-06-16 15:00:00"}}]
+
"""}
diff --git a/tests/regressiontests/serializers_regress/models.py b/tests/regressiontests/serializers_regress/models.py
index 3b9c228d4c..b441885f10 100644
--- a/tests/regressiontests/serializers_regress/models.py
+++ b/tests/regressiontests/serializers_regress/models.py
@@ -205,3 +205,7 @@ class USStatePKData(models.Model):
# class XMLPKData(models.Model):
# data = models.XMLField(primary_key=True)
+class ComplexModel(models.Model):
+ field1 = models.CharField(maxlength=10)
+ field2 = models.CharField(maxlength=10)
+ field3 = models.CharField(maxlength=10)
diff --git a/tests/regressiontests/serializers_regress/tests.py b/tests/regressiontests/serializers_regress/tests.py
index 7a7b8bde1f..2e386b9aa2 100644
--- a/tests/regressiontests/serializers_regress/tests.py
+++ b/tests/regressiontests/serializers_regress/tests.py
@@ -9,6 +9,7 @@ forward, backwards and self references.
import unittest, datetime
+from cStringIO import StringIO
from django.utils.functional import curry
from django.core import serializers
@@ -295,5 +296,41 @@ def serializerTest(format, self):
for (func, pk, klass, datum) in test_data:
func[1](self, pk, klass, datum)
+def fieldsTest(format, self):
+ # Clear the database first
+ management.flush(verbosity=0, interactive=False)
+
+ obj = ComplexModel(field1='first',field2='second',field3='third')
+ obj.save()
+
+ # Serialize then deserialize the test database
+ serialized_data = serializers.serialize(format, [obj], indent=2, fields=('field1','field3'))
+ result = serializers.deserialize(format, serialized_data).next()
+
+ # Check that the deserialized object contains data in only the serialized fields.
+ self.assertEqual(result.object.field1, 'first')
+ self.assertEqual(result.object.field2, '')
+ self.assertEqual(result.object.field3, 'third')
+
+def streamTest(format, self):
+ # Clear the database first
+ management.flush(verbosity=0, interactive=False)
+
+ obj = ComplexModel(field1='first',field2='second',field3='third')
+ obj.save()
+
+ # Serialize the test database to a stream
+ stream = StringIO()
+ serializers.serialize(format, [obj], indent=2, stream=stream)
+
+ # Serialize normally for a comparison
+ string_data = serializers.serialize(format, [obj], indent=2)
+
+ # Check that the two are the same
+ self.assertEqual(string_data, stream.buffer())
+ stream.close()
+
for format in serializers.get_serializer_formats():
setattr(SerializerTests, 'test_'+format+'_serializer', curry(serializerTest, format))
+ setattr(SerializerTests, 'test_'+format+'_serializer_fields', curry(fieldsTest, format))
+ setattr(SerializerTests, 'test_'+format+'_serializer_stream', curry(fieldsTest, format))