M8-T17: add Home Assistant thermal entities
This commit is contained in:
@@ -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"}
|
||||
|
||||
Reference in New Issue
Block a user