Files
mindfulness/server/tests/test_legal_links_unittest.py
2026-02-03 17:43:58 +08:00

73 lines
2.7 KiB
Python

import os
import unittest
class TestLegalLinksLangResolution(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
# 让 Settings 能顺利构造(避免因必填 env 缺失导致导入时报错)
os.environ.setdefault("DATABASE_URL", "mysql+aiomysql://u:p@127.0.0.1:3306/mindfulness_dev?charset=utf8mb4")
os.environ.setdefault("REDIS_URL", "redis://:p@127.0.0.1:6379/0")
os.environ.setdefault("CELERY_BROKER_URL", "redis://:p@127.0.0.1:6379/0")
def setUp(self) -> None:
# 每个用例都清理 settings 缓存,避免环境变量修改不生效
from app.core.config import get_settings
get_settings.cache_clear()
def test_resolve_lang_default_en(self) -> None:
from app.api.v1.legal import _resolve_lang
self.assertEqual(_resolve_lang(None), "en")
self.assertEqual(_resolve_lang(""), "en")
def test_resolve_lang_tc_for_zh(self) -> None:
from app.api.v1.legal import _resolve_lang
self.assertEqual(_resolve_lang("zh"), "tc")
self.assertEqual(_resolve_lang("zh-Hant"), "tc")
self.assertEqual(_resolve_lang("zh-TW"), "tc")
self.assertEqual(_resolve_lang("zh-HK"), "tc")
self.assertEqual(_resolve_lang("tc"), "tc")
def test_pick_urls_fallback_to_en(self) -> None:
# 不配置 tc 链接时,应回退到 en
os.environ["LEGAL_PRIVACY_URL_EN"] = "https://example.com/en-privacy"
os.environ["LEGAL_TERMS_URL_EN"] = "https://example.com/en-terms"
os.environ.pop("LEGAL_PRIVACY_URL_TC", None)
os.environ.pop("LEGAL_TERMS_URL_TC", None)
from app.core.config import get_settings
get_settings.cache_clear()
from app.api.v1.legal import _pick_urls
privacy, terms, resolved = _pick_urls("tc")
self.assertEqual(privacy, "https://example.com/en-privacy")
self.assertEqual(terms, "https://example.com/en-terms")
self.assertEqual(resolved, "en")
def test_pick_urls_tc_when_configured(self) -> None:
os.environ["LEGAL_PRIVACY_URL_EN"] = "https://example.com/en-privacy"
os.environ["LEGAL_TERMS_URL_EN"] = "https://example.com/en-terms"
os.environ["LEGAL_PRIVACY_URL_TC"] = "https://example.com/tc-privacy"
os.environ["LEGAL_TERMS_URL_TC"] = "https://example.com/tc-terms"
from app.core.config import get_settings
get_settings.cache_clear()
from app.api.v1.legal import _pick_urls
privacy, terms, resolved = _pick_urls("tc")
self.assertEqual(privacy, "https://example.com/tc-privacy")
self.assertEqual(terms, "https://example.com/tc-terms")
self.assertEqual(resolved, "tc")
if __name__ == "__main__":
unittest.main()