mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-01 19:10:12 +03:00
tests: add TestHTMLInputWithListAndDict, re-using 2 existing list tests
This commit is contained in:
parent
a639a7c4a4
commit
5236674905
|
@ -469,19 +469,6 @@ class TestHTMLInput:
|
||||||
assert serializer.is_valid()
|
assert serializer.is_valid()
|
||||||
assert serializer.validated_data == {'scores': [1]}
|
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):
|
def test_querydict_list_input_supports_indexed_keys(self):
|
||||||
"""
|
"""
|
||||||
When data is passed in the format `scores[0]=1&scores[1]=3`
|
When data is passed in the format `scores[0]=1&scores[1]=3`
|
||||||
|
@ -494,18 +481,6 @@ class TestHTMLInput:
|
||||||
assert serializer.is_valid()
|
assert serializer.is_valid()
|
||||||
assert serializer.validated_data == {'scores': ['5', '6']}
|
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):
|
def test_querydict_list_input_posts_key_but_no_values(self):
|
||||||
"""
|
"""
|
||||||
When there are no keys passed, there is no default, and required=False
|
When there are no keys passed, there is no default, and required=False
|
||||||
|
@ -519,6 +494,37 @@ class TestHTMLInput:
|
||||||
assert serializer.validated_data == {'scores': ['']}
|
assert serializer.validated_data == {'scores': ['']}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('field', (
|
||||||
|
serializers.ListField,
|
||||||
|
serializers.DictField,
|
||||||
|
))
|
||||||
|
class TestHTMLInputWithListAndDict:
|
||||||
|
def test_querydict_no_values_uses_default(self, field):
|
||||||
|
"""
|
||||||
|
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 = field(default=lambda: {'default': 'value'})
|
||||||
|
|
||||||
|
serializer = TestSerializer(data=QueryDict('a=1&'))
|
||||||
|
assert serializer.is_valid()
|
||||||
|
assert serializer.validated_data == {'a': 1, 'scores': {'default': 'value'}}
|
||||||
|
|
||||||
|
def test_querydict_no_values_no_default_and_not_required(self, field):
|
||||||
|
"""
|
||||||
|
When there are no keys passed, there is no default, and required=False
|
||||||
|
The field should be skipped
|
||||||
|
"""
|
||||||
|
class TestSerializer(serializers.Serializer):
|
||||||
|
scores = field(required=False)
|
||||||
|
|
||||||
|
serializer = TestSerializer(data=QueryDict(''))
|
||||||
|
assert serializer.is_valid()
|
||||||
|
assert serializer.validated_data == {}
|
||||||
|
|
||||||
|
|
||||||
class TestCreateOnlyDefault:
|
class TestCreateOnlyDefault:
|
||||||
def setup(self):
|
def setup(self):
|
||||||
default = serializers.CreateOnlyDefault('2001-01-01')
|
default = serializers.CreateOnlyDefault('2001-01-01')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user