diff options
Diffstat (limited to 'tests/test_bound_fields.py')
| -rw-r--r-- | tests/test_bound_fields.py | 69 | 
1 files changed, 69 insertions, 0 deletions
| diff --git a/tests/test_bound_fields.py b/tests/test_bound_fields.py new file mode 100644 index 00000000..469437e4 --- /dev/null +++ b/tests/test_bound_fields.py @@ -0,0 +1,69 @@ +from rest_framework import serializers + + +class TestSimpleBoundField: +    def test_empty_bound_field(self): +        class ExampleSerializer(serializers.Serializer): +            text = serializers.CharField(max_length=100) +            amount = serializers.IntegerField() + +        serializer = ExampleSerializer() + +        assert serializer['text'].value == '' +        assert serializer['text'].errors is None +        assert serializer['text'].name == 'text' +        assert serializer['amount'].value is None +        assert serializer['amount'].errors is None +        assert serializer['amount'].name == 'amount' + +    def test_populated_bound_field(self): +        class ExampleSerializer(serializers.Serializer): +            text = serializers.CharField(max_length=100) +            amount = serializers.IntegerField() + +        serializer = ExampleSerializer(data={'text': 'abc', 'amount': 123}) + +        assert serializer['text'].value == 'abc' +        assert serializer['text'].errors is None +        assert serializer['text'].name == 'text' +        assert serializer['amount'].value is 123 +        assert serializer['amount'].errors is None +        assert serializer['amount'].name == 'amount' + +    def test_error_bound_field(self): +        class ExampleSerializer(serializers.Serializer): +            text = serializers.CharField(max_length=100) +            amount = serializers.IntegerField() + +        serializer = ExampleSerializer(data={'text': 'x' * 1000, 'amount': 123}) +        serializer.is_valid() + +        assert serializer['text'].value == 'x' * 1000 +        assert serializer['text'].errors == ['Ensure this field has no more than 100 characters.'] +        assert serializer['text'].name == 'text' +        assert serializer['amount'].value is 123 +        assert serializer['amount'].errors is None +        assert serializer['amount'].name == 'amount' + + +class TestNestedBoundField: +    def test_nested_empty_bound_field(self): +        class Nested(serializers.Serializer): +            more_text = serializers.CharField(max_length=100) +            amount = serializers.IntegerField() + +        class ExampleSerializer(serializers.Serializer): +            text = serializers.CharField(max_length=100) +            nested = Nested() + +        serializer = ExampleSerializer() + +        assert serializer['text'].value == '' +        assert serializer['text'].errors is None +        assert serializer['text'].name == 'text' +        assert serializer['nested']['more_text'].value == '' +        assert serializer['nested']['more_text'].errors is None +        assert serializer['nested']['more_text'].name == 'nested.more_text' +        assert serializer['nested']['amount'].value is None +        assert serializer['nested']['amount'].errors is None +        assert serializer['nested']['amount'].name == 'nested.amount' | 
