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
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def decorate(fn):
|
||||||
|
def wrapper(self, request, *args, **kwargs):
|
||||||
|
return fn(self, request, *args, **kwargs)
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
class ActionViewSet(GenericViewSet):
|
class ActionViewSet(GenericViewSet):
|
||||||
queryset = Action.objects.all()
|
queryset = Action.objects.all()
|
||||||
|
|
||||||
|
@ -68,6 +74,16 @@ class ActionViewSet(GenericViewSet):
|
||||||
def unresolvable_detail_action(self, request, *args, **kwargs):
|
def unresolvable_detail_action(self, request, *args, **kwargs):
|
||||||
raise NotImplementedError
|
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):
|
class ActionNamesViewSet(GenericViewSet):
|
||||||
|
|
||||||
|
@ -191,6 +207,8 @@ class GetExtraActionsTests(TestCase):
|
||||||
'detail_action',
|
'detail_action',
|
||||||
'list_action',
|
'list_action',
|
||||||
'unresolvable_detail_action',
|
'unresolvable_detail_action',
|
||||||
|
'wrapped_detail_action',
|
||||||
|
'wrapped_list_action',
|
||||||
]
|
]
|
||||||
|
|
||||||
self.assertEqual(actual, expected)
|
self.assertEqual(actual, expected)
|
||||||
|
@ -218,6 +236,7 @@ class GetExtraActionUrlMapTests(TestCase):
|
||||||
expected = OrderedDict([
|
expected = OrderedDict([
|
||||||
('Custom list action', 'http://testserver/api/actions/custom_list_action/'),
|
('Custom list action', 'http://testserver/api/actions/custom_list_action/'),
|
||||||
('List action', 'http://testserver/api/actions/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)
|
self.assertEqual(view.get_extra_action_url_map(), expected)
|
||||||
|
@ -229,6 +248,7 @@ class GetExtraActionUrlMapTests(TestCase):
|
||||||
expected = OrderedDict([
|
expected = OrderedDict([
|
||||||
('Custom detail action', 'http://testserver/api/actions/1/custom_detail_action/'),
|
('Custom detail action', 'http://testserver/api/actions/1/custom_detail_action/'),
|
||||||
('Detail action', 'http://testserver/api/actions/1/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
|
# "Unresolvable detail action" excluded, since it's not resolvable
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user