fix: address account valuation review findings
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
from jarca_ledger_mcp import service
|
||||
|
||||
|
||||
def test_loan_balance_requires_representative_liability_definition(tmp_path):
|
||||
path = str(tmp_path / "ledger.sqlite3")
|
||||
bank = service.create_ledger_account("은행", type="bank", db_path=path)["account"]["id"]
|
||||
loan = service.create_ledger_account("대출", type="loan", db_path=path)["account"]["id"]
|
||||
|
||||
missing_definition = service.register_account_valuation(
|
||||
loan,
|
||||
"2026-06-30",
|
||||
100,
|
||||
valuation_kind="balance",
|
||||
verification_status="verified",
|
||||
db_path=path,
|
||||
)
|
||||
assert missing_definition["success"] is False
|
||||
assert missing_definition["error_code"] == "validation_error"
|
||||
assert service.list_account_valuations(loan, db_path=path)["count"] == 0
|
||||
|
||||
ordinary_balance = service.register_account_valuation(
|
||||
bank,
|
||||
"2026-06-30",
|
||||
100,
|
||||
valuation_kind="balance",
|
||||
verification_status="verified",
|
||||
db_path=path,
|
||||
)
|
||||
defined_loan_balance = service.register_account_valuation(
|
||||
loan,
|
||||
"2026-06-30",
|
||||
100,
|
||||
valuation_kind="balance",
|
||||
representative_liability_definition="principal_only",
|
||||
verification_status="verified",
|
||||
db_path=path,
|
||||
)
|
||||
assert ordinary_balance["success"] is True
|
||||
assert defined_loan_balance["success"] is True
|
||||
|
||||
|
||||
def test_correction_replays_by_evidence_and_conflicts_on_changed_payload(tmp_path):
|
||||
path = str(tmp_path / "ledger.sqlite3")
|
||||
account = service.create_ledger_account("계좌", db_path=path)["account"]["id"]
|
||||
parent = service.register_account_valuation(
|
||||
account,
|
||||
"2026-06-30",
|
||||
100,
|
||||
source_ref="statement-1",
|
||||
verification_status="verified",
|
||||
db_path=path,
|
||||
)["valuation"]
|
||||
|
||||
first = service.correct_account_valuation(
|
||||
parent["id"],
|
||||
110,
|
||||
"statement correction",
|
||||
db_path=path,
|
||||
)
|
||||
replay = service.correct_account_valuation(
|
||||
parent["id"],
|
||||
110,
|
||||
"statement correction",
|
||||
db_path=path,
|
||||
)
|
||||
changed_amount = service.correct_account_valuation(
|
||||
parent["id"],
|
||||
111,
|
||||
"statement correction",
|
||||
db_path=path,
|
||||
)
|
||||
changed_reason = service.correct_account_valuation(
|
||||
parent["id"],
|
||||
110,
|
||||
"different correction",
|
||||
db_path=path,
|
||||
)
|
||||
changed_source = service.correct_account_valuation(
|
||||
parent["id"],
|
||||
110,
|
||||
"statement correction",
|
||||
source_ref="statement-2",
|
||||
db_path=path,
|
||||
)
|
||||
|
||||
assert first["success"] is True
|
||||
assert replay["success"] is True
|
||||
assert replay["reused"] is True
|
||||
assert replay["valuation"]["id"] == first["valuation"]["id"]
|
||||
for changed in (changed_amount, changed_reason, changed_source):
|
||||
assert changed["success"] is False
|
||||
assert changed["error_code"] == "correction_conflict"
|
||||
assert service.list_account_valuations(account, db_path=path)["count"] == 2
|
||||
Reference in New Issue
Block a user