Skip to content

Commit cb42b99

Browse files
committed
Proof of bug encode#2761
- When not submitting key for list fields or multiple choice, partial serialization should result in empty state (key not there), not an empty list.
1 parent cd4c389 commit cb42b99

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

tests/test_serializer_lists.py

+29
Original file line numberDiff line numberDiff line change
@@ -289,3 +289,32 @@ class Meta:
289289
serializer = TestSerializer(data=[], many=True)
290290
assert not serializer.is_valid()
291291
assert serializer.errors == {'non_field_errors': ['Non field error']}
292+
293+
294+
class TestSerializerPartialUsage:
295+
"""
296+
When not submitting key for list fields or multiple choice, partial
297+
serialization should result in an empty state (key not there), not
298+
an empty list.
299+
300+
Regression test for Github issue #2761.
301+
"""
302+
def test_partial_listfield(self):
303+
class ListSerializer(serializers.Serializer):
304+
listdata = serializers.ListField()
305+
serializer = ListSerializer(data=MultiValueDict(), partial=True)
306+
result = serializer.to_internal_value(data={})
307+
assert "listdata" not in result
308+
assert serializer.is_valid()
309+
assert serializer.validated_data == {}
310+
assert serializer.errors == {}
311+
312+
def test_partial_multiplechoice(self):
313+
class MultipleChoiceSerializer(serializers.Serializer):
314+
multiplechoice = serializers.MultipleChoiceField(choices=[1, 2, 3])
315+
serializer = MultipleChoiceSerializer(data=MultiValueDict(), partial=True)
316+
result = serializer.to_internal_value(data={})
317+
assert "multiplechoice" not in result
318+
assert serializer.is_valid()
319+
assert serializer.validated_data == {}
320+
assert serializer.errors == {}

0 commit comments

Comments
 (0)