|
|
@@ -10,6 +10,7 @@ import pytest
|
|
|
|
|
|
from custom_components.room_cal_ha.button import (
|
|
|
ForceRefreshButton,
|
|
|
+ OverrideCurrentButton,
|
|
|
OverrideEmptyButton,
|
|
|
TestNextGuestButton,
|
|
|
)
|
|
|
@@ -119,6 +120,56 @@ async def test_test_next_guest_no_next_data_does_nothing():
|
|
|
btn.coordinator.async_start_override.assert_not_awaited()
|
|
|
|
|
|
|
|
|
+# ---------------------------------------------------------------------------
|
|
|
+# OverrideCurrentButton
|
|
|
+# ---------------------------------------------------------------------------
|
|
|
+
|
|
|
+_CURRENT = ReservationData(
|
|
|
+ guest_name="Carol",
|
|
|
+ check_in_date=date(2026, 7, 2),
|
|
|
+ check_in_time=time(15, 0),
|
|
|
+ check_out_date=date(2026, 7, 6),
|
|
|
+ check_out_time=time(11, 0),
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
+def _override_current_button(current=_CURRENT):
|
|
|
+ btn = object.__new__(OverrideCurrentButton)
|
|
|
+ btn.coordinator = MagicMock()
|
|
|
+ btn.coordinator.data = MagicMock(current=current) if current is not None else None
|
|
|
+ btn.coordinator.async_start_override = AsyncMock()
|
|
|
+ return btn
|
|
|
+
|
|
|
+
|
|
|
+async def test_override_current_calls_start_override():
|
|
|
+ btn = _override_current_button()
|
|
|
+ await btn.async_press()
|
|
|
+ btn.coordinator.async_start_override.assert_awaited_once()
|
|
|
+
|
|
|
+
|
|
|
+async def test_override_current_passes_unchanged_current_data():
|
|
|
+ btn = _override_current_button()
|
|
|
+ await btn.async_press()
|
|
|
+ override: OverrideData = btn.coordinator.async_start_override.call_args[0][0]
|
|
|
+ assert isinstance(override, OverrideData)
|
|
|
+ assert override.current == _CURRENT
|
|
|
+ assert override.next is None
|
|
|
+
|
|
|
+
|
|
|
+async def test_override_current_no_end_at():
|
|
|
+ btn = _override_current_button()
|
|
|
+ await btn.async_press()
|
|
|
+ kwargs = btn.coordinator.async_start_override.call_args[1]
|
|
|
+ assert "end_at" not in kwargs
|
|
|
+
|
|
|
+
|
|
|
+async def test_override_current_no_data_does_nothing():
|
|
|
+ btn = _override_current_button(current=None)
|
|
|
+ btn.coordinator.data = None
|
|
|
+ await btn.async_press()
|
|
|
+ btn.coordinator.async_start_override.assert_not_awaited()
|
|
|
+
|
|
|
+
|
|
|
# ---------------------------------------------------------------------------
|
|
|
# OverrideEmptyButton
|
|
|
# ---------------------------------------------------------------------------
|