diff --git a/tests/unit/test_language_consistency.py b/tests/unit/test_language_consistency.py new file mode 100644 index 0000000..b198b76 --- /dev/null +++ b/tests/unit/test_language_consistency.py @@ -0,0 +1,40 @@ +from __future__ import annotations + +import importlib +import sys +import types + + +def _import_language_module(): + """Import glitter.language with a lightweight rich stub when needed.""" + + if "rich.text" not in sys.modules: + rich_module = types.ModuleType("rich") + rich_text_module = types.ModuleType("rich.text") + + class _FakeText: + def __init__(self, value: str) -> None: + self.plain = value + + def stylize(self, style: str) -> None: # noqa: ARG002 + return None + + rich_text_module.Text = _FakeText + sys.modules["rich"] = rich_module + sys.modules["rich.text"] = rich_text_module + + return importlib.import_module("glitter.language") + + +def test_message_keys_are_consistent_between_languages() -> None: + language = _import_language_module() + en_keys = set(language.MESSAGES["en"].keys()) + zh_keys = set(language.MESSAGES["zh"].keys()) + assert en_keys == zh_keys + + +def test_message_tones_only_reference_existing_message_keys() -> None: + language = _import_language_module() + message_keys = set(language.MESSAGES["en"].keys()) + tone_keys = set(language.MESSAGE_TONES.keys()) + assert tone_keys <= message_keys