feat: deliver schema 15 monthly settlement lifecycle
This commit is contained in:
@@ -26,7 +26,9 @@ def _app_wrapper(tmp_path: Path) -> Path:
|
||||
def test_reusable_settlement_draft_panel_exists_and_is_importable(tmp_path):
|
||||
assert VIEW.is_file(), "shared Dashboard settlement draft panel is missing"
|
||||
from streamlit.testing.v1 import AppTest
|
||||
app = AppTest.from_file(str(_app_wrapper(tmp_path))).run()
|
||||
app = AppTest.from_file(str(_app_wrapper(tmp_path)))
|
||||
app.session_state["authenticated_actor"] = "fixture-operator"
|
||||
app = app.run()
|
||||
assert not app.exception
|
||||
|
||||
|
||||
@@ -44,7 +46,9 @@ def test_streamlit_panel_renders_lifecycle_without_writing_or_creating_db(monkey
|
||||
db_path = tmp_path / "dashboard-missing.sqlite3"
|
||||
# Explicit synthetic DB path and no authenticated actor: render only.
|
||||
monkeypatch.setenv("JARCA_LEDGER_DB_PATH", str(db_path))
|
||||
app = AppTest.from_file(str(_app_wrapper(tmp_path))).run()
|
||||
app = AppTest.from_file(str(_app_wrapper(tmp_path)))
|
||||
app.session_state["authenticated_actor"] = "fixture-operator"
|
||||
app = app.run()
|
||||
assert not app.exception
|
||||
page = "\n".join([e.value for e in app.markdown] + [e.value for e in app.caption] + [e.value for e in app.info] + [e.label for e in app.button])
|
||||
for expected in ("초안", "검토", "승인", "최종", "취소", "정정", "평가자료", "제외 사유"):
|
||||
@@ -91,13 +95,16 @@ def test_app_test_create_review_approve_finalize_roundtrip(tmp_path, monkeypatch
|
||||
seeded = create_manual_asset("Synthetic asset", 125, "2026-09-30", "other", source_note="fixture", db_path=str(db_path))
|
||||
assert seeded.get("success"), seeded
|
||||
monkeypatch.setenv("JARCA_LEDGER_DB_PATH", str(db_path))
|
||||
app = AppTest.from_file(str(_app_wrapper(tmp_path))).run()
|
||||
monkeypatch.setattr("dashboard.authentication.get_authenticated_actor", lambda: "fixture-operator")
|
||||
app = AppTest.from_file(str(_app_wrapper(tmp_path)))
|
||||
app.session_state["authenticated_actor"] = "fixture-operator"
|
||||
app = app.run()
|
||||
assert not app.exception
|
||||
app.button[0].click().run()
|
||||
assert not app.exception
|
||||
assert app.button[0].label == "초안 생성 / 정정 초안"
|
||||
assert len(app.selectbox[0].options) == 1
|
||||
assert "active" in " ".join(item.value for item in app.caption)
|
||||
next(button for button in app.button if button.label == "초안 만들기").click().run()
|
||||
assert not app.exception
|
||||
assert any(button.label == "검토 / 새로고침 대상" for button in app.button)
|
||||
# Exercise read-only review through the rendered explicit button.
|
||||
review = next(button for button in app.button if button.label == "검토 / 새로고침 대상")
|
||||
review.click().run(timeout=10)
|
||||
|
||||
Reference in New Issue
Block a user