From 94ebb1d2597de5ea6540e36d9b4b089e2eee74b3 Mon Sep 17 00:00:00 2001 From: Pierre Chiquet Date: Tue, 14 Mar 2017 10:35:20 +0100 Subject: [PATCH] Add test to check ManyRelatedField is not required by default This test passes with a QueryDict but not with a dictionary as input data, because `field.get_value(data)` (called in Serializer.to_internal_value) returns: - empty when data is a dictionary - [] when data is a QueryDict --- tests/test_serializer.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_serializer.py b/tests/test_serializer.py index f76cec9c3..56a973c0d 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -9,6 +9,7 @@ from collections import Mapping import pytest from django.db import models +from django.http import QueryDict from rest_framework import fields, relations, serializers from rest_framework.compat import unicode_repr @@ -456,6 +457,20 @@ class TestDefaultInclusions: assert serializer.errors == {} +class TestSerializerManyRelatedFieldIsNotRequiredByDefault: + def setup(self): + class ExampleSerializer(serializers.Serializer): + name = serializers.StringRelatedField(many=True) + self.Serializer = ExampleSerializer + + def test_validation_success_dictionary(self): + serializer = self.Serializer(data={}) + assert serializer.is_valid() + + def test_validation_success_querydict(self): + serializer = self.Serializer(data=QueryDict('')) + assert serializer.is_valid() + class TestSerializerValidationWithCompiledRegexField: def setup(self): class ExampleSerializer(serializers.Serializer):