33from rest_framework_json_api import serializers , views
44from rest_framework_json_api .renderers import JSONRenderer
55
6- from example .models import Comment , Entry
6+ from example .models import Author , Comment , Entry
77
88
99# serializers
@@ -45,8 +45,8 @@ class ReadOnlyDummyTestViewSet(views.ReadOnlyModelViewSet):
4545 serializer_class = DummyTestSerializer
4646
4747
48- def render_dummy_test_serialized_view (view_class ):
49- serializer = view_class .serializer_class (instance = Entry () )
48+ def render_dummy_test_serialized_view (view_class , instance ):
49+ serializer = view_class .serializer_class (instance = instance )
5050 renderer = JSONRenderer ()
5151 return renderer .render (
5252 serializer .data ,
@@ -58,22 +58,22 @@ def test_simple_reverse_relation_included_renderer():
5858 Test renderer when a single reverse fk relation is passed.
5959 '''
6060 rendered = render_dummy_test_serialized_view (
61- DummyTestViewSet )
61+ DummyTestViewSet , Entry () )
6262
6363 assert rendered
6464
6565
6666def test_simple_reverse_relation_included_read_only_viewset ():
6767 rendered = render_dummy_test_serialized_view (
68- ReadOnlyDummyTestViewSet )
68+ ReadOnlyDummyTestViewSet , Entry () )
6969
7070 assert rendered
7171
7272
7373def test_render_format_field_names (settings ):
7474 """Test that json field is kept untouched."""
7575 settings .JSON_API_FORMAT_FIELD_NAMES = 'dasherize'
76- rendered = render_dummy_test_serialized_view (DummyTestViewSet )
76+ rendered = render_dummy_test_serialized_view (DummyTestViewSet , Entry () )
7777
7878 result = json .loads (rendered .decode ())
7979 assert result ['data' ]['attributes' ]['json-field' ] == {'JsonKey' : 'JsonValue' }
@@ -83,17 +83,15 @@ def test_render_format_keys(settings):
8383 """Test that json field value keys are formated."""
8484 delattr (settings , 'JSON_API_FORMAT_FILED_NAMES' )
8585 settings .JSON_API_FORMAT_KEYS = 'dasherize'
86- rendered = render_dummy_test_serialized_view (DummyTestViewSet )
86+ rendered = render_dummy_test_serialized_view (DummyTestViewSet , Entry () )
8787
8888 result = json .loads (rendered .decode ())
8989 assert result ['data' ]['attributes' ]['json-field' ] == {'json-key' : 'JsonValue' }
9090
9191
92- def test_writeonly_not_in_response (settings ):
92+ def test_writeonly_not_in_response ():
9393 """Test that writeonly fields are not shown in list response"""
9494
95- settings .JSON_API_FORMAT_FIELD_NAMES = 'dasherize'
96-
9795 class WriteonlyTestSerializer (serializers .ModelSerializer ):
9896 '''Serializer for testing the absence of write_only fields'''
9997 comments = serializers .ResourceRelatedField (
@@ -112,8 +110,27 @@ class WriteOnlyDummyTestViewSet(views.ReadOnlyModelViewSet):
112110 queryset = Entry .objects .all ()
113111 serializer_class = WriteonlyTestSerializer
114112
115- rendered = render_dummy_test_serialized_view (WriteOnlyDummyTestViewSet )
113+ rendered = render_dummy_test_serialized_view (WriteOnlyDummyTestViewSet , Entry () )
116114 result = json .loads (rendered .decode ())
117115
118116 assert 'rating' not in result ['data' ]['attributes' ]
119117 assert 'relationships' not in result ['data' ]
118+
119+
120+ def test_render_empty_relationship_reverse_lookup ():
121+ """Test that empty relationships are rendered as None."""
122+
123+ class EmptyRelationshipSerializer (serializers .ModelSerializer ):
124+ class Meta :
125+ model = Author
126+ fields = ('bio' , )
127+
128+ class EmptyRelationshipViewSet (views .ReadOnlyModelViewSet ):
129+ queryset = Author .objects .all ()
130+ serializer_class = EmptyRelationshipSerializer
131+
132+ rendered = render_dummy_test_serialized_view (EmptyRelationshipViewSet , Author ())
133+ result = json .loads (rendered .decode ())
134+ assert 'relationships' in result ['data' ]
135+ assert 'bio' in result ['data' ]['relationships' ]
136+ assert result ['data' ]['relationships' ]['bio' ] == {'data' : None }
0 commit comments