import pytest from fin_hub.coupling.ops_hub import ServiceCostLine, build_service_cost_report from fin_hub.ingest.hosteurope import parse_hosteurope_csv from pathlib import Path def test_build_service_cost_report_groups_by_service(): rows = parse_hosteurope_csv(Path(__file__).parent / "fixtures" / "hosteurope.csv") lines = [ ServiceCostLine( service_id=row.service_id, environment=row.environment, period_month=row.period_month, amount=row.amount, currency=row.currency, source=row.source, ) for row in rows ] report = build_service_cost_report(lines) assert report["signal"] == "service_cost_attribution" assert len(report["services"]) == 2 assert report["totals_by_month"]["2026-06"] == pytest.approx(99.8)