From 75c80087b80a496aa854230688b04f76a4d0d163 Mon Sep 17 00:00:00 2001 From: Stephen Chisholm Date: Fri, 2 Dec 2016 16:12:12 -0400 Subject: [PATCH] Adds test for RelatedField choices - Test tries to derive from RelatedField and return a dict in the to_representation method. This current raises a TypeError. --- tests/test_model_serializer.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index b839f56ca..a9be11447 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -9,6 +9,7 @@ from __future__ import unicode_literals import decimal from collections import OrderedDict +import pytest from django.core.exceptions import ImproperlyConfigured from django.core.validators import ( @@ -642,6 +643,22 @@ class TestRelationalFieldDisplayValue(TestCase): expected = OrderedDict([(1, 'My Red Color'), (2, 'My Yellow Color'), (3, 'My Green Color')]) self.assertEqual(serializer.fields['color'].choices, expected) + def test_to_representation_returns_dict_type(self): + class TestField(serializers.RelatedField): + def to_representation(self, value): + return {'id': value.id} + + class TestSerializer(serializers.ModelSerializer): + color = TestField(queryset=DisplayValueTargetModel.objects.all()) + + class Meta: + model = DisplayValueModel + fields = '__all__' + + serializer = TestSerializer() + expected = OrderedDict([("{'id': 1}", 'Red Color'), ("{'id': 2}", 'Yellow Color'), ("{'id': 3}", 'Green Color')]) + self.assertEqual(serializer.fields['color'].choices, expected) + class TestIntegration(TestCase): def setUp(self):