Test decorated extra action

This commit is contained in:
Ryan P Kilby 2019-12-20 13:49:38 -08:00
parent 17f2b39bdb
commit 20a811dbda

View File

@ -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
])