Skip to content

Commit 93f2cce

Browse files
committed
added tests for async locale middleware
1 parent a18c8ae commit 93f2cce

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

tests/test_middlewares/test_locale.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import pytest
2+
3+
from django.test import AsyncClient
4+
5+
6+
client = AsyncClient()
7+
8+
9+
@pytest.mark.django_db
10+
class TestLocaleMiddleware:
11+
@pytest.fixture(autouse=True)
12+
def set_settings(self, settings):
13+
old_use_i18n = settings.USE_I18N
14+
old_language = settings.LANGUAGES
15+
old_middleware = settings.MIDDLEWARE
16+
old_urlconf = settings.ROOT_URLCONF
17+
18+
settings.USE_I18N = True
19+
settings.LANGUAGES = [("en", "English"), ("fr", "French")]
20+
settings.MIDDLEWARE = [
21+
"django_async_extensions.amiddleware.locale.AsyncLocaleMiddleware",
22+
"django.middleware.common.CommonMiddleware",
23+
]
24+
settings.ROOT_URLCONF = "test_middlewares.urls"
25+
26+
yield settings
27+
28+
settings.USE_I18N = old_use_i18n
29+
settings.LANGUAGES = old_language
30+
settings.MIDDLEWARE = old_middleware
31+
settings.ROOT_URLCONF = old_urlconf
32+
33+
async def test_streaming_response(self):
34+
# Regression test for #5241
35+
response = await client.get("/fr/streaming/")
36+
assert b"Oui/Non" in b"".join(
37+
[content async for content in response.streaming_content]
38+
)
39+
response = await client.get("/en/streaming/")
40+
assert b"Yes/No" in b"".join(
41+
[content async for content in response.streaming_content]
42+
)

tests/test_middlewares/urls.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from django.conf.urls.i18n import i18n_patterns
2+
from django.http import HttpResponse, StreamingHttpResponse
3+
from django.urls import path
4+
from django.utils.translation import gettext_lazy as _
5+
6+
7+
async def stream_http_generator():
8+
yield _("Yes")
9+
yield "/"
10+
yield _("No")
11+
12+
13+
urlpatterns = i18n_patterns(
14+
path("simple/", lambda r: HttpResponse()),
15+
path("streaming/", lambda r: StreamingHttpResponse(stream_http_generator())),
16+
)

0 commit comments

Comments
 (0)