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 bd5a955

Browse files
added view precedence test
1 parent 736837f commit bd5a955

File tree

1 file changed

+52
-7
lines changed

1 file changed

+52
-7
lines changed

‎example/tests/integration/test_model_resource_name.py

Lines changed: 52 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from example.tests.utils import load_json
55

66
from rest_framework.test import APITestCase
7-
from example import models, serializers
7+
from example import models, serializers, views
88
pytestmark = pytest.mark.django_db
99

1010

@@ -13,17 +13,61 @@ class JSONAPIMeta:
1313
resource_name = "resource_name_from_JSONAPIMeta"
1414

1515

16-
def test_match_model_resource_name_on_list(single_entry, client):
17-
models.Comment.__bases__ += (_PatchedModel,)
18-
response = client.get(reverse("comment-list"))
19-
data = load_json(response.content)['data']
20-
# name should be super-author instead of model name RenamedAuthor
21-
assert [x.get('type') for x in data] == ['resource_name_from_JSONAPIMeta'], 'List included types are incorrect'
16+
@pytest.mark.usefixtures("single_entry")
17+
class ModelResourceNameTests(APITestCase):
18+
def test_model_resource_name_on_list(self):
19+
models.Comment.__bases__ += (_PatchedModel,)
20+
response = self.client.get(reverse("comment-list"))
21+
data = load_json(response.content)['data'][0]
22+
# name should be super-author instead of model name RenamedAuthor
23+
assert (data.get('type') == 'resource_name_from_JSONAPIMeta'), (
24+
'resource_name from model incorrect on list')
25+
26+
# Precedence tests
27+
def test_resource_name_precendence(self):
28+
# default
29+
response = self.client.get(reverse("comment-list"))
30+
data = load_json(response.content)['data'][0]
31+
assert (data.get('type') == 'comments'), (
32+
'resource_name from model incorrect on list')
33+
34+
# model > default
35+
models.Comment.__bases__ += (_PatchedModel,)
36+
response = self.client.get(reverse("comment-list"))
37+
data = load_json(response.content)['data'][0]
38+
assert (data.get('type') == 'resource_name_from_JSONAPIMeta'), (
39+
'resource_name from model incorrect on list')
40+
41+
# serializer > model
42+
serializers.CommentSerializer.Meta.resource_name = "resource_name_from_serializer"
43+
response = self.client.get(reverse("comment-list"))
44+
data = load_json(response.content)['data'][0]
45+
assert (data.get('type') == 'resource_name_from_serializer'), (
46+
'resource_name from serializer incorrect on list')
47+
48+
# view > serializer > model
49+
views.CommentViewSet.resource_name = 'resource_name_from_view'
50+
response = self.client.get(reverse("comment-list"))
51+
data = load_json(response.content)['data'][0]
52+
assert (data.get('type') == 'resource_name_from_view'), (
53+
'resource_name from view incorrect on list')
54+
55+
def tearDown(self):
56+
models.Comment.__bases__ = (models.Comment.__bases__[0],)
57+
try:
58+
delattr(serializers.CommentSerializer.Meta, "resource_name")
59+
except AttributeError:
60+
pass
61+
try:
62+
delattr(views.CommentViewSet, "resource_name")
63+
except AttributeError:
64+
pass
2265

2366

2467
@pytest.mark.usefixtures("single_entry")
2568
class ResourceNameConsistencyTest(APITestCase):
2669

70+
# Included rename tests
2771
def test_type_match_on_included_and_inline_base(self):
2872
self._check_relationship_and_included_comment_type_are_the_same(reverse("entry-list"))
2973

@@ -43,6 +87,7 @@ def test_type_match_on_included_and_inline_with_serializer_resource_name_and_JSO
4387

4488
self._check_relationship_and_included_comment_type_are_the_same(reverse("entry-list"))
4589

90+
# Relation rename tests
4691
def test_resource_and_relationship_type_match(self):
4792
self._check_resource_and_relationship_comment_type_match()
4893

0 commit comments

Comments
(0)

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