Skip to content

Commit 3879749

Browse files
committed
add tests for async locale middleware
1 parent e7fa022 commit 3879749

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import pytest
2+
3+
4+
@pytest.mark.django_db
5+
class TestLocaleMiddleware:
6+
@pytest.fixture(autouse=True)
7+
def set_settings(self, settings):
8+
settings.USE_I18N = True
9+
settings.LANGUAGES = [("en", "English"), ("fr", "French")]
10+
settings.MIDDLEWARE = [
11+
"django_async_extensions.middleware.locale.AsyncLocaleMiddleware",
12+
"django.middleware.common.CommonMiddleware",
13+
]
14+
settings.ROOT_URLCONF = "test_middlewares.urls"
15+
16+
async def test_streaming_response(self, async_client):
17+
# Regression test for #5241
18+
response = await async_client.get("/fr/streaming/")
19+
assert b"Oui/Non" in b"".join(
20+
[content async for content in response.streaming_content]
21+
)
22+
response = await async_client.get("/en/streaming/")
23+
assert b"Yes/No" in b"".join(
24+
[content async for content in response.streaming_content]
25+
)

tests/test_middlewares/test_middleware_mixin.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from django.http.response import HttpResponse
77

88
from django_async_extensions.middleware.base import AsyncMiddlewareMixin
9+
from django_async_extensions.middleware.locale import AsyncLocaleMiddleware
910
from django_async_extensions.middleware.security import AsyncSecurityMiddleware
1011

1112
req = HttpResponse()
@@ -33,6 +34,7 @@ async def process_request(self, request):
3334
class TestMiddlewareMixin:
3435
middlewares = [
3536
AsyncSecurityMiddleware,
37+
AsyncLocaleMiddleware,
3638
]
3739

3840
def test_repr(self):

tests/test_middlewares/urls.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
1+
from django.conf.urls.i18n import i18n_patterns
2+
from django.http import HttpResponse, StreamingHttpResponse
13
from django.urls import path
4+
from django.utils.translation import gettext_lazy as _
5+
26

37
from . import views
48

9+
10+
async def stream_http_generator():
11+
yield _("Yes")
12+
yield "/"
13+
yield _("No")
14+
15+
516
urlpatterns = [
617
path("middleware_exceptions/view/", views.normal_view),
718
path("middleware_exceptions/error/", views.server_error),
@@ -14,3 +25,8 @@
1425
views.async_exception_in_render,
1526
),
1627
]
28+
29+
urlpatterns += i18n_patterns(
30+
path("simple/", lambda r: HttpResponse()),
31+
path("streaming/", lambda r: StreamingHttpResponse(stream_http_generator())),
32+
)

0 commit comments

Comments
 (0)