Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ce945f2

Browse files
committed
Merge pull request #164 from django-json-api/feature/utils_overrides
Make the renderer subclassable
2 parents 0ceeddd + 7e4b239 commit ce945f2

File tree

4 files changed

+362
-355
lines changed

4 files changed

+362
-355
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import pytest
2+
from django.contrib.auth import get_user_model
3+
4+
from rest_framework_json_api import serializers
5+
from rest_framework_json_api.renderers import JSONRenderer
6+
7+
pytestmark = pytest.mark.django_db
8+
9+
class ResourceSerializer(serializers.ModelSerializer):
10+
class Meta:
11+
fields = ('username',)
12+
model = get_user_model()
13+
14+
15+
def test_build_json_resource_obj():
16+
resource = {
17+
'pk': 1,
18+
'username': 'Alice',
19+
}
20+
21+
serializer = ResourceSerializer(data={'username': 'Alice'})
22+
serializer.is_valid()
23+
resource_instance = serializer.save()
24+
25+
output = {
26+
'type': 'user',
27+
'id': '1',
28+
'attributes': {
29+
'username': 'Alice'
30+
},
31+
}
32+
33+
assert JSONRenderer.build_json_resource_obj(
34+
serializer.fields, resource, resource_instance, 'user') == output
35+
36+
37+
def test_extract_attributes():
38+
fields = {
39+
'id': serializers.Field(),
40+
'username': serializers.Field(),
41+
'deleted': serializers.ReadOnlyField(),
42+
}
43+
resource = {'id': 1, 'deleted': None, 'username': 'jerel'}
44+
expected = {
45+
'username': 'jerel',
46+
'deleted': None
47+
}
48+
assert sorted(JSONRenderer.extract_attributes(fields, resource)) == sorted(expected), 'Regular fields should be extracted'
49+
assert sorted(JSONRenderer.extract_attributes(fields, {})) == sorted(
50+
{'username': ''}), 'Should not extract read_only fields on empty serializer'

‎example/tests/unit/test_utils.py‎

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717

1818
class ResourceSerializer(serializers.ModelSerializer):
19-
class Meta():
19+
class Meta:
2020
fields = ('username',)
2121
model = get_user_model()
2222

@@ -86,44 +86,6 @@ def test_format_relation_name():
8686
assert utils.format_relation_name('first_name', 'camelize') == 'firstNames'
8787

8888

89-
def test_build_json_resource_obj():
90-
resource = {
91-
'pk': 1,
92-
'username': 'Alice',
93-
}
94-
95-
serializer = ResourceSerializer(data={'username': 'Alice'})
96-
serializer.is_valid()
97-
resource_instance = serializer.save()
98-
99-
output = {
100-
'type': 'user',
101-
'id': '1',
102-
'attributes': {
103-
'username': 'Alice'
104-
},
105-
}
106-
107-
assert utils.build_json_resource_obj(
108-
serializer.fields, resource, resource_instance, 'user') == output
109-
110-
111-
def test_extract_attributes():
112-
fields = {
113-
'id': serializers.Field(),
114-
'username': serializers.Field(),
115-
'deleted': serializers.ReadOnlyField(),
116-
}
117-
resource = {'id': 1, 'deleted': None, 'username': 'jerel'}
118-
expected = {
119-
'username': 'jerel',
120-
'deleted': None
121-
}
122-
assert sorted(utils.extract_attributes(fields, resource)) == sorted(expected), 'Regular fields should be extracted'
123-
assert sorted(utils.extract_attributes(fields, {})) == sorted(
124-
{'username': ''}), 'Should not extract read_only fields on empty serializer'
125-
126-
12789
class SerializerWithIncludedSerializers(EntrySerializer):
12890
included_serializers = {
12991
'blog': BlogSerializer,

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /