73 lines
2.7 KiB
Python
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()
|
|
|