tests/unit/test_i18n.py (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
from __future__ import annotations
from app.i18n import (
encode_bootstrap_note,
from_accept_language,
render_bootstrap_note,
resolve_lang,
translate,
)
class _Req:
def __init__(self, *, cookie: str | None = None, accept: str | None = None):
self.cookies = {"lang": cookie} if cookie else {}
self.headers = {"accept-language": accept} if accept else {}
def test_cookie_wins_over_accept_language():
req = _Req(cookie="pt", accept="en-US,en;q=0.9")
assert resolve_lang(req) == "pt"
def test_accept_language_en_without_cookie():
req = _Req(accept="en-US,en;q=0.8")
assert resolve_lang(req) == "en"
def test_default_is_pt():
assert resolve_lang(_Req()) == "pt"
assert from_accept_language(None) == "pt"
def test_bootstrap_note_follows_lang():
raw = encode_bootstrap_note("empty_import", "boom")
pt = render_bootstrap_note("pt", raw)
en = render_bootstrap_note("en", raw)
assert "Inventário vazio" in pt
assert "boom" in pt
assert "Empty inventory" in en
assert "boom" in en
def test_legacy_bootstrap_note_passthrough():
old = "Inventário vazio: alguma coisa"
assert render_bootstrap_note("en", old) == old
def test_translate_fallback():
assert translate("en", "not_found") == "Tracker not found"
assert translate("pt", "not_found") == "Tracker não encontrado"
|