M8-T17: add Home Assistant thermal entities

This commit is contained in:
2026-08-23 21:22:06 +02:00
parent 3eec701448
commit 39c11ae606
5 changed files with 683 additions and 8 deletions
+18 -1
View File
@@ -15,7 +15,7 @@ Coverage:
from __future__ import annotations
from datetime import datetime, timezone
from datetime import datetime, timedelta, timezone
from pathlib import Path
from typing import Any
from unittest.mock import MagicMock, patch
@@ -1361,3 +1361,20 @@ def test_settings_payload_includes_ha_state_topic_prefix() -> None:
assert payload["ha_state_topic_prefix"] == "my_prefix", (
f"Expected 'my_prefix', got {payload['ha_state_topic_prefix']!r}"
)
def test_stale_m8_entities_includes_ended_electricity_meter(disco_db) -> None:
"""An electricity swap clears exactly the old Meter's two discovery configs."""
from app.models.energy import Meter
from app.services.ha_discovery import _stale_m8_entities
now = datetime.now(timezone.utc)
with Session(disco_db) as session:
old = Meter(label="old", commodity="electricity", started_at=now - timedelta(days=1),
ended_at=now, reason="meter_swap", note=None, created_at=now)
current = Meter(label="current", commodity="electricity", started_at=now,
ended_at=None, reason="meter_swap", note=None, created_at=now)
session.add_all((old, current))
session.commit()
keys = {entity.key for entity in _stale_m8_entities(session)}
assert keys == {f"meter.{old.uuid}.total", f"meter.{old.uuid}.today"}