mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
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
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user