ACT-001: actuator-first sensor lifecycle
This commit is contained in:
@@ -88,6 +88,26 @@ def test_get_history_calls_home_assistant_history_api() -> None:
|
||||
assert call.kwargs["params"]["end_time"] == "2026-06-02T00:00:00+00:00"
|
||||
|
||||
|
||||
def test_list_entity_metadata_calls_template_api() -> None:
|
||||
response = _response()
|
||||
response.text = (
|
||||
'[{"entity_id":"sensor.temperature","area_name":"Kueche","device_name":"Thermometer"}]'
|
||||
)
|
||||
client = HaClient(HaClientSettings(url="http://ha.local", token="test-token"))
|
||||
client._session.post = Mock(return_value=response) # type: ignore[method-assign]
|
||||
|
||||
metadata = client.list_entity_metadata(["sensor.temperature"])
|
||||
|
||||
assert metadata == {
|
||||
"sensor.temperature": {
|
||||
"area_id": None,
|
||||
"area_name": "Kueche",
|
||||
"device_id": None,
|
||||
"device_name": "Thermometer",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("entity_ids", "start", "end"),
|
||||
[
|
||||
|
||||
@@ -44,6 +44,16 @@ class FakeHaClient(HaClient):
|
||||
]
|
||||
]
|
||||
|
||||
def list_entity_metadata(self, entity_ids: list[str]) -> dict[str, dict[str, str | None]]:
|
||||
return {
|
||||
"sensor.temperature": {
|
||||
"area_id": "kitchen",
|
||||
"area_name": "Kueche",
|
||||
"device_id": "device-1",
|
||||
"device_name": "Thermometer",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def test_ha_reader_returns_summaries() -> None:
|
||||
reader = HaReader(FakeHaClient())
|
||||
@@ -53,6 +63,8 @@ def test_ha_reader_returns_summaries() -> None:
|
||||
assert domains == {"sensor", "light"}
|
||||
sensor = next(item for item in summaries if item.entity_id == "sensor.temperature")
|
||||
assert sensor.unit_of_measurement == "°C"
|
||||
assert sensor.area_name == "Kueche"
|
||||
assert sensor.device_name == "Thermometer"
|
||||
|
||||
|
||||
def test_ha_reader_discovers_learnable_sensors() -> None:
|
||||
|
||||
Reference in New Issue
Block a user