|
|
@@ -9,10 +9,8 @@ from unittest.mock import MagicMock
|
|
|
import pytest
|
|
|
|
|
|
from custom_components.room_cal_ha.coordinator import CoordinatorData
|
|
|
-from custom_components.room_cal_ha.models import ApiStatusData, ReservationData
|
|
|
+from custom_components.room_cal_ha.models import ReservationData
|
|
|
from custom_components.room_cal_ha.sensor import (
|
|
|
- ApiCheckedAtSensor,
|
|
|
- ApiStatusSensor,
|
|
|
GuestNameSensor,
|
|
|
LastRefreshSensor,
|
|
|
ReservationDateTimeSensor,
|
|
|
@@ -32,7 +30,6 @@ def _coordinator(
|
|
|
nxt=None,
|
|
|
current_ts=None,
|
|
|
next_ts=None,
|
|
|
- api_status=None,
|
|
|
):
|
|
|
coord = MagicMock()
|
|
|
coord.data = CoordinatorData(
|
|
|
@@ -40,7 +37,6 @@ def _coordinator(
|
|
|
next=nxt or ReservationData(),
|
|
|
current_last_refresh=current_ts,
|
|
|
next_last_refresh=next_ts,
|
|
|
- api_status=api_status,
|
|
|
)
|
|
|
return coord
|
|
|
|
|
|
@@ -247,80 +243,3 @@ def test_last_refresh_sensor_none_before_any_fetch():
|
|
|
assert s.native_value is None
|
|
|
|
|
|
|
|
|
-# ---------------------------------------------------------------------------
|
|
|
-# ApiStatusSensor
|
|
|
-# ---------------------------------------------------------------------------
|
|
|
-
|
|
|
-def test_api_status_sensor_native_value():
|
|
|
- status = ApiStatusData(status="ok")
|
|
|
- coord = _coordinator(api_status=status)
|
|
|
- s = object.__new__(ApiStatusSensor)
|
|
|
- s.coordinator = coord
|
|
|
- assert s.native_value == "ok"
|
|
|
-
|
|
|
-
|
|
|
-def test_api_status_sensor_none_when_no_status():
|
|
|
- coord = _coordinator(api_status=None)
|
|
|
- s = object.__new__(ApiStatusSensor)
|
|
|
- s.coordinator = coord
|
|
|
- assert s.native_value is None
|
|
|
-
|
|
|
-
|
|
|
-def test_api_status_sensor_attrs_include_checks_and_stale():
|
|
|
- checks = {"caldav_connection": {"ok": True}, "calendar": {"ok": False, "reason": "not found"}}
|
|
|
- status = ApiStatusData(status="degraded", checks=checks, stale=True)
|
|
|
- coord = _coordinator(api_status=status)
|
|
|
- s = object.__new__(ApiStatusSensor)
|
|
|
- s.coordinator = coord
|
|
|
-
|
|
|
- attrs = s.extra_state_attributes
|
|
|
- assert attrs["caldav_connection"] == {"ok": True}
|
|
|
- assert attrs["calendar"] == {"ok": False, "reason": "not found"}
|
|
|
- assert attrs["stale"] is True
|
|
|
-
|
|
|
-
|
|
|
-def test_api_status_sensor_attrs_include_checked_at_when_present():
|
|
|
- ts = datetime(2026, 6, 22, 10, 0, tzinfo=timezone.utc)
|
|
|
- status = ApiStatusData(status="ok", checked_at=ts)
|
|
|
- coord = _coordinator(api_status=status)
|
|
|
- s = object.__new__(ApiStatusSensor)
|
|
|
- s.coordinator = coord
|
|
|
-
|
|
|
- attrs = s.extra_state_attributes
|
|
|
- assert "checked_at" in attrs
|
|
|
- assert attrs["checked_at"] == ts.isoformat()
|
|
|
-
|
|
|
-
|
|
|
-def test_api_status_sensor_attrs_none_when_no_status():
|
|
|
- coord = _coordinator(api_status=None)
|
|
|
- s = object.__new__(ApiStatusSensor)
|
|
|
- s.coordinator = coord
|
|
|
- assert s.extra_state_attributes is None
|
|
|
-
|
|
|
-
|
|
|
-# ---------------------------------------------------------------------------
|
|
|
-# ApiCheckedAtSensor
|
|
|
-# ---------------------------------------------------------------------------
|
|
|
-
|
|
|
-def test_api_checked_at_sensor_returns_timestamp():
|
|
|
- ts = datetime(2026, 6, 22, 10, 0, tzinfo=timezone.utc)
|
|
|
- status = ApiStatusData(checked_at=ts)
|
|
|
- coord = _coordinator(api_status=status)
|
|
|
- s = object.__new__(ApiCheckedAtSensor)
|
|
|
- s.coordinator = coord
|
|
|
- assert s.native_value == ts
|
|
|
-
|
|
|
-
|
|
|
-def test_api_checked_at_sensor_none_when_no_status():
|
|
|
- coord = _coordinator(api_status=None)
|
|
|
- s = object.__new__(ApiCheckedAtSensor)
|
|
|
- s.coordinator = coord
|
|
|
- assert s.native_value is None
|
|
|
-
|
|
|
-
|
|
|
-def test_api_checked_at_sensor_none_when_checked_at_not_set():
|
|
|
- status = ApiStatusData(status="starting")
|
|
|
- coord = _coordinator(api_status=status)
|
|
|
- s = object.__new__(ApiCheckedAtSensor)
|
|
|
- s.coordinator = coord
|
|
|
- assert s.native_value is None
|