diff --git a/tests/test_decorators.py b/tests/test_decorators.py index 99ba13e60..8d0805cbb 100644 --- a/tests/test_decorators.py +++ b/tests/test_decorators.py @@ -1,3 +1,5 @@ +import sys + import pytest from django.test import TestCase @@ -187,6 +189,20 @@ class ActionDecoratorTestCase(TestCase): assert str(excinfo.value) == "@action() missing required argument: 'detail'" + @pytest.mark.skipif(sys.version_info < (3, 11), reason="HTTPMethod was added in Python 3.11") + def test_method_mapping_http_method(self): + from http import HTTPMethod + + method_names = [getattr(HTTPMethod, name.upper()) for name in APIView.http_method_names] + + @action(detail=False, methods=method_names) + def test_action(): + raise NotImplementedError + + expected_mapping = {name: test_action.__name__ for name in APIView.http_method_names} + + assert test_action.mapping == expected_mapping + def test_method_mapping_http_methods(self): # All HTTP methods should be mappable @action(detail=False, methods=[])