38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from app.ha.client import HaClient, HaClientSettings
|
|
from app.ha.reader import HaReader
|
|
|
|
|
|
class FakeHaClient(HaClient):
|
|
def __init__(self) -> None:
|
|
super().__init__(HaClientSettings(url="http://test", token="token"))
|
|
|
|
def list_entities(self) -> list[dict[str, object]]:
|
|
return [
|
|
{
|
|
"entity_id": "sensor.temperature",
|
|
"state": "21.5",
|
|
"attributes": {
|
|
"state_class": "measurement",
|
|
"device_class": "temperature",
|
|
"unit_of_measurement": "°C",
|
|
},
|
|
},
|
|
{
|
|
"entity_id": "light.living_room",
|
|
"state": "on",
|
|
"attributes": {},
|
|
},
|
|
]
|
|
|
|
|
|
def test_ha_reader_returns_summaries() -> None:
|
|
reader = HaReader(FakeHaClient())
|
|
summaries = reader.read_entities()
|
|
assert len(summaries) == 2
|
|
domains = {summary.domain for summary in summaries}
|
|
assert domains == {"sensor", "light"}
|
|
sensor = next(item for item in summaries if item.entity_id == "sensor.temperature")
|
|
assert sensor.unit_of_measurement == "°C"
|