Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions tests/test_model_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

from rest_framework import serializers
from rest_framework.compat import set_many, unicode_repr
from rest_framework.test import APIRequestFactory


def dedent(blocktext):
Expand Down Expand Up @@ -776,6 +777,51 @@ class Meta:
}
self.assertEqual(serializer.data, expected)

def test_many_to_many_not_required(self):
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = RelationalModel
fields = '__all__'
extra_kwargs = {'many_to_many': {'required': False}}

new_foreign_key = ForeignKeyTargetModel.objects.create(
name='foreign_key'
)
new_one_to_one = OneToOneTargetModel.objects.create(
name='one_to_one'
)

data = {
'foreign_key': new_foreign_key.pk,
'one_to_one': new_one_to_one.pk,
}

serializer = TestSerializer(data=data)
assert serializer.is_valid(), serializer.errors

def test_many_to_many_not_required_with_querydict(self):
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = RelationalModel
fields = '__all__'
extra_kwargs = {'many_to_many': {'required': False}}

new_foreign_key = ForeignKeyTargetModel.objects.create(
name='foreign_key'
)
new_one_to_one = OneToOneTargetModel.objects.create(
name='one_to_one'
)

data = {
'foreign_key': new_foreign_key.pk,
'one_to_one': new_one_to_one.pk,
}

data_querydict = APIRequestFactory().post('', data).POST

serializer = TestSerializer(data=data_querydict)
assert serializer.is_valid(), serializer.errors

# Tests for bulk create using `ListSerializer`.

Expand Down