Skip to content

Commit 7d43eb8

Browse files
committed
Added tests for extract_meta functions and top level meta objects
1 parent a763ace commit 7d43eb8

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

example/tests/integration/test_meta.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
pytestmark = pytest.mark.django_db
88

99

10-
def test_top_level_data_meta(blog, client):
10+
def test_top_level_meta(blog, client):
1111

1212
expected = {
1313
"data": {
@@ -20,6 +20,9 @@ def test_top_level_data_meta(blog, client):
2020
"copyright": datetime.now().year
2121
},
2222
},
23+
"meta": {
24+
"apiDocs": "/docs/api/blogs"
25+
},
2326
}
2427

2528
response = client.get(reverse("blog-detail", kwargs={'pk': blog.pk}))

example/tests/unit/test_renderer_class_methods.py

+48
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@
77
pytestmark = pytest.mark.django_db
88

99
class ResourceSerializer(serializers.ModelSerializer):
10+
version = serializers.SerializerMethodField()
11+
def get_version(self, obj):
12+
return '1.0.0'
1013
class Meta:
1114
fields = ('username',)
15+
meta_fields = ('version',)
1216
model = get_user_model()
1317

1418

@@ -48,3 +52,47 @@ def test_extract_attributes():
4852
assert sorted(JSONRenderer.extract_attributes(fields, resource)) == sorted(expected), 'Regular fields should be extracted'
4953
assert sorted(JSONRenderer.extract_attributes(fields, {})) == sorted(
5054
{'username': ''}), 'Should not extract read_only fields on empty serializer'
55+
56+
def test_extract_meta():
57+
serializer = ResourceSerializer(data={'username': 'jerel', 'version':'1.0.0'})
58+
serializer.is_valid()
59+
expected = {
60+
'version': '1.0.0',
61+
}
62+
assert JSONRenderer.extract_meta(serializer, serializer.data) == expected
63+
64+
def test_extract_root_meta():
65+
def get_root_meta(obj):
66+
return {
67+
'foo': 'meta-value'
68+
}
69+
70+
serializer = ResourceSerializer()
71+
serializer.get_root_meta = get_root_meta
72+
expected = {
73+
'foo': 'meta-value',
74+
}
75+
assert JSONRenderer.extract_root_meta(serializer, {}, {}) == expected
76+
77+
def test_extract_root_meta_many():
78+
def get_root_meta(obj):
79+
return {
80+
'foo': 'meta-value'
81+
}
82+
83+
serializer = ResourceSerializer(many=True)
84+
serializer.get_root_meta = get_root_meta
85+
expected = {
86+
'foo': 'meta-value'
87+
}
88+
assert JSONRenderer.extract_root_meta(serializer, {}, {}) == expected
89+
90+
def test_extract_root_meta_invalid_meta():
91+
def get_root_meta(obj):
92+
return 'not a dict'
93+
94+
serializer = ResourceSerializer()
95+
serializer.get_root_meta = get_root_meta
96+
with pytest.raises(AssertionError) as e_info:
97+
JSONRenderer.extract_root_meta(serializer, {}, {})
98+

0 commit comments

Comments
 (0)