from __future__ import annotations from pathlib import Path ROOT = Path(__file__).resolve().parents[1] def test_language_lifecycle_has_a_dedicated_admin_section() -> None: module_source = (ROOT / "webui/src/module.ts").read_text(encoding="utf-8") panel_source = ( ROOT / "webui/src/features/admin/LanguagePackagesPanel.tsx" ).read_text(encoding="utf-8") general_source = ( ROOT / "webui/src/features/admin/SystemSettingsPanel.tsx" ).read_text(encoding="utf-8") assert 'id: "system-language-packages"' in module_source assert 'surfaceId: "admin.section.system-language-packages"' in module_source assert "data-language-package-lifecycle" in panel_source assert "module.version" in panel_source assert "module.translations?.[language.code]" in panel_source assert "uninstallPackage" in panel_source assert "setPackageActive" in panel_source assert "default_locale" in panel_source assert "language_packages" not in general_source assert "available_languages:" not in general_source def test_language_lifecycle_names_every_required_state() -> None: source = ( ROOT / "webui/src/features/admin/LanguagePackagesPanel.tsx" ).read_text(encoding="utf-8") translations = ( ROOT / "webui/src/i18n/generatedTranslations.ts" ).read_text(encoding="utf-8") for marker in ( "installed.7bb4405c", "available.7c8f1005", "active.a733b809", "inactive.09af574c", "incompatible.lp001", "uninstallable.lp001", ): assert marker in source for locale_marker in ('"en": {', '"de": {'): assert locale_marker in translations assert translations.count("language_package_administration.lp001") == 2