From 508d462bb6e73d9ed7243165654b02072da566d6 Mon Sep 17 00:00:00 2001 From: DEV-bot Date: Sun, 1 Mar 2026 22:12:36 +0000 Subject: [PATCH] test(lobby): cover backend locale resolver normalization and default fallback --- lobby/tests.py | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/lobby/tests.py b/lobby/tests.py index e3bcb97..3677d15 100644 --- a/lobby/tests.py +++ b/lobby/tests.py @@ -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)