mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-28 00:49:49 +03:00
Test decorated extra action
This commit is contained in:
parent
17f2b39bdb
commit
20a811dbda
|
@ -33,6 +33,12 @@ class Action(models.Model):
|
|||
pass
|
||||
|
||||
|
||||
def decorate(fn):
|
||||
def wrapper(self, request, *args, **kwargs):
|
||||
return fn(self, request, *args, **kwargs)
|
||||
return wrapper
|
||||
|
||||
|
||||
class ActionViewSet(GenericViewSet):
|
||||
queryset = Action.objects.all()
|
||||
|
||||
|
@ -68,6 +74,16 @@ class ActionViewSet(GenericViewSet):
|
|||
def unresolvable_detail_action(self, request, *args, **kwargs):
|
||||
raise NotImplementedError
|
||||
|
||||
@action(detail=False)
|
||||
@decorate
|
||||
def wrapped_list_action(self, request, *args, **kwargs):
|
||||
raise NotImplementedError
|
||||
|
||||
@action(detail=True)
|
||||
@decorate
|
||||
def wrapped_detail_action(self, request, *args, **kwargs):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
class ActionNamesViewSet(GenericViewSet):
|
||||
|
||||
|
@ -191,6 +207,8 @@ class GetExtraActionsTests(TestCase):
|
|||
'detail_action',
|
||||
'list_action',
|
||||
'unresolvable_detail_action',
|
||||
'wrapped_detail_action',
|
||||
'wrapped_list_action',
|
||||
]
|
||||
|
||||
self.assertEqual(actual, expected)
|
||||
|
@ -218,6 +236,7 @@ class GetExtraActionUrlMapTests(TestCase):
|
|||
expected = OrderedDict([
|
||||
('Custom list action', 'http://testserver/api/actions/custom_list_action/'),
|
||||
('List action', 'http://testserver/api/actions/list_action/'),
|
||||
('Wrapped list action', 'http://testserver/api/actions/wrapped_list_action/'),
|
||||
])
|
||||
|
||||
self.assertEqual(view.get_extra_action_url_map(), expected)
|
||||
|
@ -229,6 +248,7 @@ class GetExtraActionUrlMapTests(TestCase):
|
|||
expected = OrderedDict([
|
||||
('Custom detail action', 'http://testserver/api/actions/1/custom_detail_action/'),
|
||||
('Detail action', 'http://testserver/api/actions/1/detail_action/'),
|
||||
('Wrapped detail action', 'http://testserver/api/actions/1/wrapped_detail_action/'),
|
||||
# "Unresolvable detail action" excluded, since it's not resolvable
|
||||
])
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user