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"