Skip to content

Commit fe22df3

Browse files
committed
Test decorated extra action
1 parent d985c7c commit fe22df3

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

tests/test_viewsets.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ class Action(models.Model):
3333
pass
3434

3535

36+
def decorate(fn):
37+
def wrapper(self, request, *args, **kwargs):
38+
return fn(self, request, *args, **kwargs)
39+
return wrapper
40+
41+
3642
class ActionViewSet(GenericViewSet):
3743
queryset = Action.objects.all()
3844

@@ -62,6 +68,16 @@ def custom_detail_action(self, request, *args, **kwargs):
6268
def unresolvable_detail_action(self, request, *args, **kwargs):
6369
raise NotImplementedError
6470

71+
@action(detail=False)
72+
@decorate
73+
def wrapped_list_action(self, request, *args, **kwargs):
74+
raise NotImplementedError
75+
76+
@action(detail=True)
77+
@decorate
78+
def wrapped_detail_action(self, request, *args, **kwargs):
79+
raise NotImplementedError
80+
6581

6682
class ActionNamesViewSet(GenericViewSet):
6783

@@ -157,6 +173,8 @@ def test_extra_actions(self):
157173
'detail_action',
158174
'list_action',
159175
'unresolvable_detail_action',
176+
'wrapped_list_action',
177+
'wrapped_detail_action',
160178
]
161179

162180
self.assertEqual(actual, expected)
@@ -172,6 +190,7 @@ def test_list_view(self):
172190
expected = OrderedDict([
173191
('Custom list action', 'http://testserver/api/actions/custom_list_action/'),
174192
('List action', 'http://testserver/api/actions/list_action/'),
193+
('Wrapped list action', 'http://testserver/api/actions/wrapped_list_action/'),
175194
])
176195

177196
self.assertEqual(view.get_extra_action_url_map(), expected)
@@ -183,6 +202,7 @@ def test_detail_view(self):
183202
expected = OrderedDict([
184203
('Custom detail action', 'http://testserver/api/actions/1/custom_detail_action/'),
185204
('Detail action', 'http://testserver/api/actions/1/detail_action/'),
205+
('Wrapped detail action', 'http://testserver/api/actions/wrapped_detail_action/'),
186206
# "Unresolvable detail action" excluded, since it's not resolvable
187207
])
188208

0 commit comments

Comments
 (0)