"""PR4 (finance closed-loop) — owner-scoped budget accountability view.""" from __future__ import annotations from decimal import Decimal import pytest from app.domains.finance import budget_service FY = 2026 @pytest.mark.asyncio async def test_owner_scope_filters_to_owned_budgets(db_session): db = db_session await budget_service.create_budget(db, fiscal_year=FY, amount_usd=Decimal("1000"), department="Eng", owner_person_id="owner-A") await budget_service.create_budget(db, fiscal_year=FY, amount_usd=Decimal("2000"), department="Sales", owner_person_id="owner-B") await budget_service.create_budget(db, fiscal_year=FY, amount_usd=Decimal("3000"), department="Ops") # unowned await db.flush() mine = await budget_service.budget_vs_actual(db, FY, f"{FY}-06", owner_person_id="owner-A", start_month=1) assert mine["budget_count"] == 1 assert mine["items"][0]["department"] == "Eng" nobody = await budget_service.budget_vs_actual(db, FY, f"{FY}-06", owner_person_id="ghost", start_month=1) assert nobody["budget_count"] == 0 everyone = await budget_service.budget_vs_actual(db, FY, f"{FY}-06", start_month=1) assert everyone["budget_count"] == 3