M8-T05: bind electricity costs to source bindings

This commit is contained in:
2026-08-23 21:22:05 +02:00
parent 2e125dbd53
commit 1ea2f659e0
10 changed files with 1057 additions and 304 deletions
+12 -11
View File
@@ -430,9 +430,7 @@ def test_prices_tibber_limit_caps_results(energy_client):
start = (datetime.now(UTC) - timedelta(hours=3)).isoformat()
end = (datetime.now(UTC) + timedelta(hours=2)).isoformat()
resp = client.get(
"/api/energy/prices", params={"start": start, "end": end, "limit": 2}
)
resp = client.get("/api/energy/prices", params={"start": start, "end": end, "limit": 2})
assert resp.status_code == 200
body = resp.json()
assert len(body["points"]) <= 2
@@ -508,9 +506,16 @@ def test_costs_schema_fields_present(energy_client):
item = resp.json()["items"][0]
for field in (
"period_start",
"d1_kwh", "d2_kwh", "r1_kwh", "r2_kwh",
"import_cost", "export_revenue", "net_cost",
"currency", "degraded",
"d1_kwh",
"d2_kwh",
"r1_kwh",
"r2_kwh",
"import_cost",
"export_revenue",
"net_cost",
"currency",
"degraded",
"source_binding_id",
):
assert field in item, f"Missing field: {field}"
@@ -556,9 +561,7 @@ def test_summary_returns_correct_structure(energy_client):
start = (datetime.now(UTC) - timedelta(hours=3)).isoformat()
end = datetime.now(UTC).isoformat()
resp = client.get(
"/api/energy/costs/summary", params={"start": start, "end": end}
)
resp = client.get("/api/energy/costs/summary", params={"start": start, "end": end})
assert resp.status_code == 200
body = resp.json()
for field in (
@@ -903,5 +906,3 @@ def test_tibber_test_token_not_in_response(energy_client):
assert resp.status_code == 200
assert secret_token not in resp.text