aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_fields.py
diff options
context:
space:
mode:
authorTom Christie2014-09-25 12:09:12 +0100
committerTom Christie2014-09-25 12:09:12 +0100
commitb47ca158b9ba9733baad080e648d24b0465ec697 (patch)
tree68721eeca909bf53dedea6d86f2894ec0eafad0a /tests/test_fields.py
parent64632da3718f501cb8174243385d38b547c2fefd (diff)
downloaddjango-rest-framework-b47ca158b9ba9733baad080e648d24b0465ec697.tar.bz2
Check for redundant on SerializerMethodField
Diffstat (limited to 'tests/test_fields.py')
-rw-r--r--tests/test_fields.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/test_fields.py b/tests/test_fields.py
index ebb88d3d..003b4b8c 100644
--- a/tests/test_fields.py
+++ b/tests/test_fields.py
@@ -710,3 +710,33 @@ class TestMultipleChoiceField(FieldValues):
('diesel', 'Diesel'),
]
)
+
+
+# Tests for SerializerMethodField.
+# --------------------------------
+
+class TestSerializerMethodField:
+ def test_serializer_method_field(self):
+ class ExampleSerializer(serializers.Serializer):
+ example_field = serializers.SerializerMethodField()
+
+ def get_example_field(self, obj):
+ return 'ran get_example_field(%d)' % obj['example_field']
+
+ serializer = ExampleSerializer({'example_field': 123})
+ assert serializer.data == {
+ 'example_field': 'ran get_example_field(123)'
+ }
+
+ def test_redundant_method_name(self):
+ class ExampleSerializer(serializers.Serializer):
+ example_field = serializers.SerializerMethodField('get_example_field')
+
+ with pytest.raises(AssertionError) as exc_info:
+ ExampleSerializer()
+ assert str(exc_info.value) == (
+ "It is redundant to specify `get_example_field` on "
+ "SerializerMethodField 'example_field' in serializer "
+ "'ExampleSerializer', because it is the same as the default "
+ "method name. Remove the `method_name` argument."
+ )