From fcfca6ec251004a49f36454878857b94449bb3c9 Mon Sep 17 00:00:00 2001 From: Pavel Kral Date: Thu, 27 Jul 2023 16:47:12 +0200 Subject: [PATCH] Implement tests for HTTPMethod from Python 3.11 --- tests/test_decorators.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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=[])