from __future__ import annotations

from jarvis_finance.services.budget_overview import get_budget_overview
from jarvis_finance.services.budget_plans import confirm_budget_plan_item, create_budget_plan_item_preview
from jarvis_finance.storage.database import connect_memory
from jarvis_finance.storage.migrations import apply_migrations


def test_budget_overview_includes_confirmed_budget_plan_with_zero_actuals() -> None:
    conn = connect_memory()
    apply_migrations(conn)
    category_id = conn.execute("SELECT category_id FROM budget_categories WHERE name='Wohnen'").fetchone()[0]
    preview = create_budget_plan_item_preview(conn, {
        "plan_month": "2026-01",
        "category_id": category_id,
        "name": "Synthetischer Wohnplan",
        "monthly_amount_chf": "100.00",
        "source_type": "excel_seed_dry_run",
    })
    confirm_budget_plan_item(conn, preview["payload"])
    overview = get_budget_overview(conn, "2026-01")
    assert overview["planned_budget_chf"] == "100.00"
    assert overview["actual_expense_chf"] == "0.00"
    assert overview["remaining_budget_chf"] == "100.00"
    assert overview["budget_status"] == "no_actuals"
    assert overview["budget_categories"][0]["budget_month"] == "100.00"
    assert overview["budget_categories"][0]["actual_year_to_date"] == "0.00"
    assert overview["uncategorized_transactions"] == []
