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
This commit is contained in:
Pierre Chiquet 2017-03-14 10:35:20 +01:00
parent 3b466fabe7
commit 94ebb1d259

View File

@ -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):