chore(jarca-ledger): finalize approved batch docs, dashboard, and CI smoke updates
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
from streamlit.testing.v1 import AppTest
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
||||
|
||||
from dashboard.app import get_transfer_review_items
|
||||
from scripts.ci_fixture_db import create_ci_fixture_db
|
||||
|
||||
|
||||
def test_get_transfer_review_items_accepts_transactions_key():
|
||||
payload = {
|
||||
"success": True,
|
||||
"transactions": [
|
||||
{"id": "tx_1", "amount": 10000},
|
||||
],
|
||||
}
|
||||
|
||||
assert get_transfer_review_items(payload) == payload["transactions"]
|
||||
|
||||
|
||||
def test_get_transfer_review_items_prefers_review_items_when_present():
|
||||
payload = {
|
||||
"success": True,
|
||||
"review_items": [
|
||||
{"id": "tx_legacy", "amount": 20000},
|
||||
],
|
||||
"transactions": [
|
||||
{"id": "tx_new", "amount": 30000},
|
||||
],
|
||||
}
|
||||
|
||||
assert get_transfer_review_items(payload) == payload["review_items"]
|
||||
|
||||
|
||||
def test_get_transfer_review_items_returns_empty_for_unsuccessful_payload():
|
||||
assert get_transfer_review_items({"success": False, "transactions": [{"id": "tx_1"}]}) == []
|
||||
assert get_transfer_review_items(None) == []
|
||||
|
||||
|
||||
def test_streamlit_apptest_core_pages_use_synthetic_fixture_db(tmp_path, monkeypatch):
|
||||
fixture = tmp_path / "fixture.sqlite3"
|
||||
create_ci_fixture_db(fixture)
|
||||
monkeypatch.setenv("JARCA_LEDGER_DB_PATH", str(fixture))
|
||||
|
||||
app_path = Path(__file__).resolve().parents[1] / "dashboard" / "app.py"
|
||||
page_expectations = {
|
||||
"요약": "가계부 운영 대시보드",
|
||||
"분류 규칙": "분류 규칙",
|
||||
"확인필요 큐": "KB↔토스뱅크 확인필요 큐",
|
||||
}
|
||||
for page, expected_text in page_expectations.items():
|
||||
at = AppTest.from_file(str(app_path), default_timeout=10)
|
||||
at.query_params["page"] = page
|
||||
at.run()
|
||||
assert not at.exception
|
||||
body_text = "\n".join(str(item.value) for item in list(at.text) + list(at.markdown) + list(at.caption))
|
||||
assert expected_text in body_text
|
||||
Reference in New Issue
Block a user