1
0
mirror of https://github.com/home-assistant/core.git synced 2026-04-17 23:53:49 +01:00
Files
core/tests/components/litterrobot/test_time.py
2026-03-13 18:33:42 +01:00

55 lines
1.8 KiB
Python

"""Test the Litter-Robot time entity."""
from __future__ import annotations
from datetime import datetime, time
from unittest.mock import MagicMock
from pylitterbot import LitterRobot3
import pytest
from homeassistant.components.time import DOMAIN as TIME_DOMAIN, SERVICE_SET_VALUE
from homeassistant.const import ATTR_ENTITY_ID, ATTR_TIME
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from .conftest import setup_integration
SLEEP_START_TIME_ENTITY_ID = "time.test_sleep_mode_start_time"
@pytest.mark.freeze_time(datetime(2023, 7, 1, 12))
async def test_sleep_mode_start_time(
hass: HomeAssistant, mock_account: MagicMock
) -> None:
"""Tests the sleep mode start time."""
await setup_integration(hass, mock_account, TIME_DOMAIN)
entity = hass.states.get(SLEEP_START_TIME_ENTITY_ID)
assert entity
assert entity.state == "17:16:00"
robot: LitterRobot3 = mock_account.robots[0]
await hass.services.async_call(
TIME_DOMAIN,
SERVICE_SET_VALUE,
{ATTR_ENTITY_ID: SLEEP_START_TIME_ENTITY_ID, ATTR_TIME: time(23, 0)},
blocking=True,
)
robot.set_sleep_mode.assert_awaited_once_with(True, time(23, 0))
async def test_time_command_exception(
hass: HomeAssistant, mock_account_with_side_effects: MagicMock
) -> None:
"""Test that LitterRobotException is wrapped in HomeAssistantError."""
await setup_integration(hass, mock_account_with_side_effects, TIME_DOMAIN)
with pytest.raises(HomeAssistantError, match="Invalid command: oops"):
await hass.services.async_call(
TIME_DOMAIN,
SERVICE_SET_VALUE,
{ATTR_ENTITY_ID: SLEEP_START_TIME_ENTITY_ID, ATTR_TIME: time(23, 0)},
blocking=True,
)