Skip to content

Commit b42b20b

Browse files
committed
Added rendering tests using default drf serializers
1 parent ac93145 commit b42b20b

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import json
2+
3+
from rest_framework.serializers import ModelSerializer, SerializerMethodField
4+
from rest_framework import viewsets
5+
6+
from rest_framework_json_api.renderers import JSONRenderer
7+
8+
from example.models import Comment, Entry
9+
10+
11+
# serializers
12+
class RelatedModelSerializer(ModelSerializer):
13+
class Meta:
14+
model = Comment
15+
fields = ('id',)
16+
17+
18+
class DummyTestSerializer(ModelSerializer):
19+
"""
20+
This serializer is a simple compound document serializer which includes only
21+
a single embedded relation
22+
"""
23+
related_models = RelatedModelSerializer(source='comments', many=True, read_only=True)
24+
25+
json_field = SerializerMethodField()
26+
27+
def get_json_field(self, entry):
28+
return {'JsonKey': 'JsonValue'}
29+
30+
class Meta:
31+
model = Entry
32+
fields = ('related_models', 'json_field')
33+
34+
35+
# views
36+
class DummyTestViewSet(viewsets.ModelViewSet):
37+
queryset = Entry.objects.all()
38+
serializer_class = DummyTestSerializer
39+
40+
41+
def render_dummy_test_serialized_view(view_class):
42+
serializer = DummyTestSerializer(instance=Entry())
43+
renderer = JSONRenderer()
44+
return renderer.render(
45+
serializer.data,
46+
renderer_context={'view': view_class()})
47+
48+
49+
def test_simple_reverse_relation_included_renderer():
50+
"""
51+
Test renderer when a single reverse fk relation is passed.
52+
"""
53+
rendered = render_dummy_test_serialized_view(
54+
DummyTestViewSet)
55+
56+
assert rendered
57+
58+
59+
def test_render_format_field_names(settings):
60+
"""Test that json field is kept untouched."""
61+
settings.JSON_API_FORMAT_FIELD_NAMES = 'dasherize'
62+
rendered = render_dummy_test_serialized_view(DummyTestViewSet)
63+
64+
result = json.loads(rendered.decode())
65+
assert result['data']['attributes']['json-field'] == {'JsonKey': 'JsonValue'}
66+
67+
68+
def test_render_format_keys(settings):
69+
"""Test that json field value keys are formated."""
70+
delattr(settings, 'JSON_API_FORMAT_FILED_NAMES')
71+
settings.JSON_API_FORMAT_KEYS = 'dasherize'
72+
rendered = render_dummy_test_serialized_view(DummyTestViewSet)
73+
74+
result = json.loads(rendered.decode())
75+
assert result['data']['attributes']['json-field'] == {'json-key': 'JsonValue'}

0 commit comments

Comments
 (0)