test(lobby): cover backend locale resolver normalization and default fallback
Some checks failed
CI / test-and-quality (push) Has been cancelled
CI / test-and-quality (pull_request) Failing after 3m4s

This commit is contained in:
2026-03-01 22:12:36 +00:00
parent e435a41660
commit 508d462bb6

View File

@@ -20,7 +20,7 @@ from fupogfakta.models import (
RoundConfig,
RoundQuestion,
)
from lobby.i18n import i18n_locale_config, lobby_i18n_catalog, resolve_error_message
from lobby.i18n import i18n_locale_config, lobby_i18n_catalog, resolve_error_message, resolve_locale
User = get_user_model()
@@ -1216,6 +1216,27 @@ class SmokeStagingCommandTests(TestCase):
class I18nResolverTests(TestCase):
def test_resolve_locale_accepts_language_tags_and_normalizes_to_supported_base_locale(self):
response = self.client.post(
reverse("lobby:join_session"),
data={"code": "", "nickname": "Luna"},
content_type="application/json",
HTTP_ACCEPT_LANGUAGE="da-DK,da;q=0.9,en;q=0.8",
)
self.assertEqual(response.status_code, 400)
self.assertEqual(resolve_locale(response.wsgi_request), "da")
def test_resolve_locale_defaults_to_en_when_header_missing(self):
response = self.client.post(
reverse("lobby:join_session"),
data={"code": "", "nickname": "Luna"},
content_type="application/json",
)
self.assertEqual(response.status_code, 400)
self.assertEqual(resolve_locale(response.wsgi_request), "en")
def test_missing_backend_key_returns_key_deterministically(self):
self.assertEqual(resolve_error_message(key="missing_key", locale="da"), "missing_key")
@@ -1252,10 +1273,13 @@ class I18nResolverTests(TestCase):
self.assertTrue(translations.get("en"), f"frontend key {key} missing en")
self.assertTrue(translations.get("da"), f"frontend key {key} missing da")
def test_backend_error_codes_map_to_same_named_translation_keys(self):
def test_backend_error_codes_map_via_shared_backend_frontend_key_map(self):
catalog = lobby_i18n_catalog()
backend_errors = catalog["backend"]["errors"]
frontend_errors = catalog["frontend"]["errors"]
shared_map = catalog["contract"]["backend_to_frontend_error_keys"]
for code, key in catalog["backend"]["error_codes"].items():
self.assertEqual(code, key)
self.assertEqual(shared_map.get(code), key)
self.assertIn(key, backend_errors)
self.assertIn(key, frontend_errors)