From 19a218f85973b4c478ec0b8373e971e1d787281a Mon Sep 17 00:00:00 2001 From: Jacob Magnusson Date: Sat, 3 Nov 2012 00:27:56 +0100 Subject: [PATCH 1/3] Bye bye star import --- rest_framework/tests/serializer.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py index d4b43862f..9febc9c8a 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): From 1b49615c00793b658f40d08617965316a3f71a7e Mon Sep 17 00:00:00 2001 From: Jacob Magnusson Date: Sat, 3 Nov 2012 00:32:02 +0100 Subject: [PATCH 2/3] Added test that makes sure that fields with dictionaries as data are returned as expected and not turned into string representations --- rest_framework/tests/models.py | 7 +++++++ rest_framework/tests/serializer.py | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 415e4d062..1a0078e8b 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 9febc9c8a..5d46ff68f 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -46,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): @@ -69,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() @@ -100,6 +106,13 @@ class BasicTests(TestCase): self.assertTrue(serializer.object is expected) self.assertEquals(serializer.data['sub_comment'], 'And Merry Christmas!') + 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): def setUp(self): From 38af6107b5fb26e2dffdeeadad80df70e256a5f3 Mon Sep 17 00:00:00 2001 From: Jacob Magnusson Date: Sat, 3 Nov 2012 00:32:08 +0100 Subject: [PATCH 3/3] Added test for ModelSerializer Meta fields returning as expected --- rest_framework/tests/serializer.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py index 5d46ff68f..3fd490644 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -105,6 +105,14 @@ 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