feat: deliver schema 15 monthly settlement lifecycle
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from pathlib import Path
|
||||
import sqlite3
|
||||
|
||||
from jarca_ledger_mcp.db import init_db
|
||||
from jarca_ledger_mcp.application.monthly_settlement_service import list_monthly_settlement_overview
|
||||
|
||||
|
||||
def test_monthly_overview_excludes_transaction_only_months(tmp_path: Path):
|
||||
db = tmp_path / "fixture.sqlite3"
|
||||
init_db(str(db))
|
||||
with sqlite3.connect(db) as conn:
|
||||
conn.execute(
|
||||
"INSERT INTO transactions(id,transaction_date,type,amount,created_at,updated_at) VALUES (?,?,?,?,?,?)",
|
||||
("tx-1", "2026-09-03", "income", 100, "2026-09-03T00:00:00Z", "2026-09-03T00:00:00Z"),
|
||||
)
|
||||
conn.commit()
|
||||
result = list_monthly_settlement_overview(db_path=str(db))
|
||||
assert result["success"]
|
||||
assert result["months"] == []
|
||||
|
||||
|
||||
def test_monthly_overview_keeps_existing_parent_and_joins_live_transaction_totals(tmp_path: Path):
|
||||
db = tmp_path / "fixture.sqlite3"
|
||||
init_db(str(db))
|
||||
with sqlite3.connect(db) as conn:
|
||||
conn.execute(
|
||||
"INSERT INTO monthly_settlement(id,month,basis_date,status,version,created_by,created_at,updated_by,updated_at) VALUES (?,?,?,?,?,?,?,?,?)",
|
||||
("settlement-1", "2026-09", "2026-09-30", "draft", 1, "test", "now", "test", "now"),
|
||||
)
|
||||
conn.execute(
|
||||
"INSERT INTO transactions(id,transaction_date,type,amount,created_at,updated_at) VALUES (?,?,?,?,?,?)",
|
||||
("tx-1", "2026-09-03", "income", 100, "2026-09-03T00:00:00Z", "2026-09-03T00:00:00Z"),
|
||||
)
|
||||
conn.commit()
|
||||
result = list_monthly_settlement_overview(db_path=str(db))
|
||||
assert result["success"]
|
||||
assert len(result["months"]) == 1
|
||||
row = result["months"][0]
|
||||
assert row["month"] == "2026-09"
|
||||
assert row["settlement_id"] == "settlement-1"
|
||||
assert row["income"] == 100
|
||||
assert row["net_cashflow_display"] is None
|
||||
assert row["net_worth_display"] is None
|
||||
|
||||
|
||||
def test_monthly_overview_keeps_parent_without_transactions(tmp_path: Path):
|
||||
db = tmp_path / "fixture.sqlite3"
|
||||
init_db(str(db))
|
||||
with sqlite3.connect(db) as conn:
|
||||
conn.execute(
|
||||
"INSERT INTO monthly_settlement(id,month,basis_date,status,version,created_by,created_at,updated_by,updated_at) VALUES (?,?,?,?,?,?,?,?,?)",
|
||||
("settlement-1", "2026-09", "2026-09-30", "draft", 1, "test", "now", "test", "now"),
|
||||
)
|
||||
conn.commit()
|
||||
row = list_monthly_settlement_overview(db_path=str(db))["months"][0]
|
||||
assert row["settlement_id"] == "settlement-1"
|
||||
assert row["income"] == 0
|
||||
assert row["expense"] == 0
|
||||
Reference in New Issue
Block a user