aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2012-11-03 00:31:36 -0700
committerTom Christie2012-11-03 00:31:36 -0700
commit746686b0658b47e66c5ff9c884e4aa1afb8123df (patch)
tree0fa7604194ae18392ec40baeed4106dd38936e65
parent59c1e0933f1f7896bb6f6f248aca07acdfb35ae7 (diff)
parent38af6107b5fb26e2dffdeeadad80df70e256a5f3 (diff)
downloaddjango-rest-framework-746686b0658b47e66c5ff9c884e4aa1afb8123df.tar.bz2
Merge pull request #360 from jmagnusson/master
Tests for pull #358 "Return dictionaries as is"
-rw-r--r--rest_framework/tests/models.py7
-rw-r--r--rest_framework/tests/serializer.py25
2 files changed, 31 insertions, 1 deletions
diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py
index 415e4d06..1a0078e8 100644
--- a/rest_framework/tests/models.py
+++ b/rest_framework/tests/models.py
@@ -122,6 +122,13 @@ class Person(RESTFrameworkModel):
name = models.CharField(max_length=10)
age = models.IntegerField(null=True, blank=True)
+ @property
+ def info(self):
+ return {
+ 'name': self.name,
+ 'age': self.age,
+ }
+
# Model for issue #324
class BlankFieldModel(RESTFrameworkModel):
diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py
index d4b43862..3fd49064 100644
--- a/rest_framework/tests/serializer.py
+++ b/rest_framework/tests/serializer.py
@@ -1,7 +1,9 @@
import datetime
from django.test import TestCase
from rest_framework import serializers
-from rest_framework.tests.models import *
+from rest_framework.tests.models import (ActionItem, Anchor, BasicModel,
+ BlankFieldModel, BlogPost, CallableDefaultValueModel, DefaultValueModel,
+ ManyToManyModel, Person, ReadOnlyManyToManyModel)
class SubComment(object):
@@ -44,8 +46,11 @@ class ActionItemSerializer(serializers.ModelSerializer):
class PersonSerializer(serializers.ModelSerializer):
+ info = serializers.Field(source='info')
+
class Meta:
model = Person
+ fields = ('name', 'age', 'info')
class BasicTests(TestCase):
@@ -67,6 +72,9 @@ class BasicTests(TestCase):
'created': datetime.datetime(2012, 1, 1),
'sub_comment': 'And Merry Christmas!'
}
+ self.person_data = {'name': 'dwight', 'age': 35}
+ self.person = Person(**self.person_data)
+ self.person.save()
def test_empty(self):
serializer = CommentSerializer()
@@ -97,6 +105,21 @@ class BasicTests(TestCase):
self.assertEquals(serializer.object, expected)
self.assertTrue(serializer.object is expected)
self.assertEquals(serializer.data['sub_comment'], 'And Merry Christmas!')
+
+ def test_model_fields_as_expected(self):
+ """ Make sure that the fields returned are the same as defined
+ in the Meta data
+ """
+ serializer = PersonSerializer(instance=self.person)
+ self.assertEquals(set(serializer.data.keys()),
+ set(['name', 'age', 'info']))
+
+ def test_field_with_dictionary(self):
+ """ Make sure that dictionaries from fields are left intact
+ """
+ serializer = PersonSerializer(instance=self.person)
+ expected = self.person_data
+ self.assertEquals(serializer.data['info'], expected)
class ValidationTests(TestCase):