37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
def test_budget_uses_compact_workbench_contract():
|
|
template = (ROOT / "templates/admin/budget.html").read_text(encoding="utf-8")
|
|
|
|
assert 'data-density-guardrail="compact-budget-workbench"' in template
|
|
assert 'aria-label="AI 成本狀態模式"' in template
|
|
assert "成本守門" in template
|
|
assert "節流狀態" in template
|
|
assert "知識策略" in template
|
|
|
|
|
|
def test_budget_keeps_cost_signals_and_hides_explanatory_copy():
|
|
template = (ROOT / "templates/admin/budget.html").read_text(encoding="utf-8")
|
|
|
|
for marker in ["當月花費", "預算使用率", "預警", "已節流"]:
|
|
assert marker in template
|
|
|
|
assert ".gov-subtitle, .gov-action-note, .gov-note, .gov-footer-copy { display:none; }" in template
|
|
assert 'class="gov-subtitle"' in template
|
|
assert "gov-action-note" in template
|
|
assert "gov-footer-copy" in template
|
|
|
|
|
|
def test_budget_preserves_cost_governance_tables_and_non_raw_wording():
|
|
template = (ROOT / "templates/admin/budget.html").read_text(encoding="utf-8")
|
|
|
|
for marker in ["預算線與節流狀態", "每日成本堆疊趨勢", "Top 5 成本使用情境", "AI 價格決策 7 日"]:
|
|
assert marker in template
|
|
|
|
for forbidden in ["raw", "endpoint", "artifact", "DB writes", "prune", "manual_required"]:
|
|
assert forbidden not in template
|