diff options
| author | Tom Christie | 2014-10-09 15:11:19 +0100 | 
|---|---|---|
| committer | Tom Christie | 2014-10-09 15:11:19 +0100 | 
| commit | 5d247a65c89594a7ab5ce2333612f23eadc6828d (patch) | |
| tree | d9e67e3a84a588747cd6e39356151149cf73b376 /tests/test_bound_fields.py | |
| parent | babdc78e61ac915fa4a01bdfb04e11a32dbf5d79 (diff) | |
| download | django-rest-framework-5d247a65c89594a7ab5ce2333612f23eadc6828d.tar.bz2 | |
First pass on nested serializers in HTML
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' | 
