core/tests/components/tessie/test_select.py

66 lines
2.1 KiB
Python

"""Test the Tessie select platform."""
from unittest.mock import patch
import pytest
from homeassistant.components.select import (
DOMAIN as SELECT_DOMAIN,
SERVICE_SELECT_OPTION,
)
from homeassistant.components.tessie.const import TessieSeatHeaterOptions
from homeassistant.const import ATTR_ENTITY_ID, ATTR_OPTION, STATE_OFF
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from .common import ERROR_UNKNOWN, TEST_RESPONSE, setup_platform
async def test_select(hass: HomeAssistant) -> None:
"""Tests that the select entities are correct."""
assert len(hass.states.async_all(SELECT_DOMAIN)) == 0
await setup_platform(hass)
assert len(hass.states.async_all(SELECT_DOMAIN)) == 5
entity_id = "select.test_seat_heater_left"
assert hass.states.get(entity_id).state == STATE_OFF
# Test changing select
with patch(
"homeassistant.components.tessie.select.set_seat_heat",
return_value=TEST_RESPONSE,
) as mock_set:
await hass.services.async_call(
SELECT_DOMAIN,
SERVICE_SELECT_OPTION,
{ATTR_ENTITY_ID: [entity_id], ATTR_OPTION: TessieSeatHeaterOptions.LOW},
blocking=True,
)
mock_set.assert_called_once()
assert mock_set.call_args[1]["seat"] == "front_left"
assert mock_set.call_args[1]["level"] == 1
assert hass.states.get(entity_id).state == TessieSeatHeaterOptions.LOW
async def test_errors(hass: HomeAssistant) -> None:
"""Tests unknown error is handled."""
await setup_platform(hass)
entity_id = "select.test_seat_heater_left"
# Test setting cover open with unknown error
with patch(
"homeassistant.components.tessie.select.set_seat_heat",
side_effect=ERROR_UNKNOWN,
) as mock_set, pytest.raises(HomeAssistantError) as error:
await hass.services.async_call(
SELECT_DOMAIN,
SERVICE_SELECT_OPTION,
{ATTR_ENTITY_ID: [entity_id], ATTR_OPTION: TessieSeatHeaterOptions.LOW},
blocking=True,
)
mock_set.assert_called_once()
assert error.from_exception == ERROR_UNKNOWN