From 23abec9192c88f9372e5784ae69c9aa5be2b21be Mon Sep 17 00:00:00 2001 From: Ben Lomax Date: Fri, 19 May 2023 21:14:32 +0800 Subject: Refs #31949 -- Made @no_append_slash decorator to work with async functions. --- tests/decorators/test_common.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 tests/decorators/test_common.py (limited to 'tests') diff --git a/tests/decorators/test_common.py b/tests/decorators/test_common.py new file mode 100644 index 0000000000..a2661ef30a --- /dev/null +++ b/tests/decorators/test_common.py @@ -0,0 +1,37 @@ +from asgiref.sync import iscoroutinefunction + +from django.http import HttpRequest, HttpResponse +from django.test import SimpleTestCase +from django.views.decorators.common import no_append_slash + + +class NoAppendSlashTests(SimpleTestCase): + def test_wrapped_sync_function_is_not_coroutine_function(self): + def sync_view(request): + return HttpResponse() + + wrapped_view = no_append_slash(sync_view) + self.assertIs(iscoroutinefunction(wrapped_view), False) + + def test_wrapped_async_function_is_coroutine_function(self): + async def async_view(request): + return HttpResponse() + + wrapped_view = no_append_slash(async_view) + self.assertIs(iscoroutinefunction(wrapped_view), True) + + def test_no_append_slash_decorator(self): + @no_append_slash + def sync_view(request): + return HttpResponse() + + self.assertIs(sync_view.should_append_slash, False) + self.assertIsInstance(sync_view(HttpRequest()), HttpResponse) + + async def test_no_append_slash_decorator_async_view(self): + @no_append_slash + async def async_view(request): + return HttpResponse() + + self.assertIs(async_view.should_append_slash, False) + self.assertIsInstance(await async_view(HttpRequest()), HttpResponse) -- cgit v1.3