mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-02 19:40:13 +03:00
Added tests of @awbacker provided in PR #5812 (includes review by @carltongibson)
This commit is contained in:
parent
950e0567cd
commit
823454da39
|
@ -466,6 +466,55 @@ class TestHTMLInput:
|
|||
assert serializer.is_valid()
|
||||
assert serializer.validated_data == {'scores': [1]}
|
||||
|
||||
def test_querydict_list_input_no_values_uses_default(self):
|
||||
"""
|
||||
When there are no values passed in, and default is set
|
||||
The field should return the default value
|
||||
"""
|
||||
class TestSerializer(serializers.Serializer):
|
||||
a = serializers.IntegerField(required=True)
|
||||
scores = serializers.ListField(default=lambda: [1, 3])
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('a=1&'))
|
||||
assert serializer.is_valid()
|
||||
assert serializer.validated_data == {'a': 1, 'scores': [1, 3]}
|
||||
|
||||
def test_querydict_list_input_supports_indexed_keys(self):
|
||||
"""
|
||||
When data is passed in the format `scores[0]=1&scores[1]=3`
|
||||
The field should return the correct list, ignoring the default
|
||||
"""
|
||||
class TestSerializer(serializers.Serializer):
|
||||
scores = serializers.ListField(default=lambda: [1, 3])
|
||||
|
||||
serializer = TestSerializer(data=QueryDict("scores[0]=5&scores[1]=6"))
|
||||
assert serializer.is_valid()
|
||||
assert serializer.validated_data == {'scores': ['5', '6']}
|
||||
|
||||
def test_querydict_list_input_no_values_no_default_and_not_required(self):
|
||||
"""
|
||||
When there are no keys passed, there is no default, and required=False
|
||||
The field should be skipped
|
||||
"""
|
||||
class TestSerializer(serializers.Serializer):
|
||||
scores = serializers.ListField(required=False)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict(''))
|
||||
assert serializer.is_valid()
|
||||
assert serializer.validated_data == {}
|
||||
|
||||
def test_querydict_list_input_posts_key_but_no_values(self):
|
||||
"""
|
||||
When there are no keys passed, there is no default, and required=False
|
||||
The field should return an array of 1 item, blank
|
||||
"""
|
||||
class TestSerializer(serializers.Serializer):
|
||||
scores = serializers.ListField(required=False)
|
||||
|
||||
serializer = TestSerializer(data=QueryDict('scores=&'))
|
||||
assert serializer.is_valid()
|
||||
assert serializer.validated_data == {'scores': ['']}
|
||||
|
||||
|
||||
class TestCreateOnlyDefault:
|
||||
def setup(self):
|
||||
|
|
Loading…
Reference in New Issue
Block a user