fix:小组件- PUSH
This commit is contained in:
72
server/tests/test_legal_links_unittest.py
Normal file
72
server/tests/test_legal_links_unittest.py
Normal file
@@ -0,0 +1,72 @@
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user