mirror of https://github.com/home-assistant/core
58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
"""Test reproduce state for select entities."""
|
|
|
|
import pytest
|
|
|
|
from homeassistant.components.select.const import (
|
|
ATTR_OPTION,
|
|
ATTR_OPTIONS,
|
|
DOMAIN,
|
|
SERVICE_SELECT_OPTION,
|
|
)
|
|
from homeassistant.const import ATTR_ENTITY_ID
|
|
from homeassistant.core import HomeAssistant, State
|
|
from homeassistant.helpers.state import async_reproduce_state
|
|
|
|
from tests.common import async_mock_service
|
|
|
|
|
|
async def test_reproducing_states(
|
|
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
|
|
) -> None:
|
|
"""Test reproducing select states."""
|
|
calls = async_mock_service(hass, DOMAIN, SERVICE_SELECT_OPTION)
|
|
hass.states.async_set(
|
|
"select.test",
|
|
"option_one",
|
|
{ATTR_OPTIONS: ["option_one", "option_two", "option_three"]},
|
|
)
|
|
|
|
await async_reproduce_state(
|
|
hass,
|
|
[
|
|
State("select.test", "option_two"),
|
|
],
|
|
)
|
|
|
|
assert len(calls) == 1
|
|
assert calls[0].domain == DOMAIN
|
|
assert calls[0].data == {ATTR_ENTITY_ID: "select.test", ATTR_OPTION: "option_two"}
|
|
|
|
# Calling it again should not do anything
|
|
await async_reproduce_state(
|
|
hass,
|
|
[
|
|
State("select.test", "option_one"),
|
|
],
|
|
)
|
|
assert len(calls) == 1
|
|
|
|
# Restoring an invalid state should not work either
|
|
await async_reproduce_state(hass, [State("select.test", "option_four")])
|
|
assert len(calls) == 1
|
|
assert "Invalid state specified" in caplog.text
|
|
|
|
# Restoring an state for an invalid entity ID logs a warning
|
|
await async_reproduce_state(hass, [State("select.non_existing", "option_three")])
|
|
assert len(calls) == 1
|
|
assert "Unable to find entity" in caplog.text
|