63 lines
2.6 KiB
Python
63 lines
2.6 KiB
Python
from pathlib import Path
|
|
|
|
|
|
PAGE = Path("frontend/src/app/(app)/page.tsx")
|
|
STARTER_HOME = Path("frontend/src/components/starter-home.tsx")
|
|
HOME_CLOUD = Path("frontend/src/lib/home-cloud-sync.ts")
|
|
RECTIFICATION_HOOK = Path("frontend/src/hooks/use-rectification-surface.ts")
|
|
DAILY_ROUTE = Path("frontend/src/app/api/daily-starlanguage/route.ts")
|
|
RECTIFICATION_ROUTE = Path("frontend/src/app/api/birth-rectification/route.ts")
|
|
|
|
|
|
def _home_entrypoint_surface() -> str:
|
|
parts = [PAGE, STARTER_HOME, HOME_CLOUD]
|
|
if RECTIFICATION_HOOK.exists():
|
|
parts.append(RECTIFICATION_HOOK)
|
|
return "".join(path.read_text(encoding="utf-8") for path in parts)
|
|
|
|
|
|
def test_daily_starlanguage_entrypoint_is_productized() -> None:
|
|
# 原值:断言 daily-starlanguage-card(空状态大卡)
|
|
# 新值:StarterEntries 的 starter-entry pill + startDailyStarlanguageConsultation
|
|
# 原因:62903b7a 已把卡片改成问候 + 输入框 + 两枚 pill,全仓已无该类名
|
|
source = _home_entrypoint_surface()
|
|
assert "今日星语" in source
|
|
assert "fetchDailyStarlanguage" in source
|
|
assert "starter-entry" in source
|
|
assert "startDailyStarlanguageConsultation" in source
|
|
assert "从今日问起" in source
|
|
assert "今天的星语还没写出来。" in source
|
|
assert "daily-starlanguage-card" not in source
|
|
assert "buildDailyStarlanguageCard" not in source
|
|
assert "点这里" not in source
|
|
assert "不会用通用文案顶替" not in source
|
|
|
|
|
|
def test_daily_starlanguage_api_declares_honest_source_boundary() -> None:
|
|
source = DAILY_ROUTE.read_text(encoding="utf-8")
|
|
assert "status: \"ok\"" in source
|
|
assert "/api/daily_guidance" in source
|
|
assert "/api/chart" not in source
|
|
assert "/api/transit" not in source
|
|
assert "exploratory_unvalidated" in source
|
|
assert "not_deterministic_prediction" in source
|
|
|
|
|
|
def test_birth_time_rectification_entrypoint_is_productized() -> None:
|
|
# 原值:断言 birth-rectification-card
|
|
# 新值:同一套 starter-entry pill + openRectificationFromHomepage
|
|
# 原因:同上,卡片入口已删除
|
|
source = _home_entrypoint_surface()
|
|
assert "生时校正" in source
|
|
assert "starter-entry" in source
|
|
assert "openRectificationFromHomepage" in source
|
|
assert "birth-rectification-card" not in source
|
|
|
|
|
|
def test_birth_rectification_api_proxies_active_questionnaire_with_boundary() -> None:
|
|
source = RECTIFICATION_ROUTE.read_text(encoding="utf-8")
|
|
assert "/api/active_rectification_questions" in source
|
|
assert "candidate_scan" in source
|
|
assert "question_count" in source
|
|
assert "not_auto_rectified" in source
|