feat(i18n): enforce shared keyspace contract across django and spa
This commit is contained in:
@@ -19,7 +19,7 @@ from fupogfakta.models import (
|
||||
RoundConfig,
|
||||
RoundQuestion,
|
||||
)
|
||||
from lobby.i18n import resolve_error_message
|
||||
from lobby.i18n import i18n_locale_config, lobby_i18n_catalog, resolve_error_message
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
@@ -1206,3 +1206,27 @@ class SmokeStagingCommandTests(TestCase):
|
||||
class I18nResolverTests(TestCase):
|
||||
def test_missing_backend_key_returns_key_deterministically(self):
|
||||
self.assertEqual(resolve_error_message(key="missing_key", locale="da"), "missing_key")
|
||||
|
||||
def test_shared_catalog_uses_en_default_and_da_en_matrix(self):
|
||||
default_locale, supported_locales = i18n_locale_config()
|
||||
catalog = lobby_i18n_catalog()
|
||||
|
||||
self.assertEqual(default_locale, "en")
|
||||
self.assertIn("en", supported_locales)
|
||||
self.assertIn("da", supported_locales)
|
||||
|
||||
for key, translations in catalog["backend"]["errors"].items():
|
||||
self.assertTrue(translations.get("en"), f"backend key {key} missing en")
|
||||
self.assertTrue(translations.get("da"), f"backend key {key} missing da")
|
||||
|
||||
for key, translations in catalog["frontend"]["errors"].items():
|
||||
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):
|
||||
catalog = lobby_i18n_catalog()
|
||||
backend_errors = catalog["backend"]["errors"]
|
||||
|
||||
for code, key in catalog["backend"]["error_codes"].items():
|
||||
self.assertEqual(code, key)
|
||||
self.assertIn(key, backend_errors)
|
||||
|
||||
Reference in New Issue
Block a user