mirror of https://github.com/home-assistant/core
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
"""The tests for reproduction of state."""
|
|
|
|
from asyncio import Future
|
|
from unittest.mock import ANY, patch
|
|
|
|
from homeassistant.components.group.reproduce_state import async_reproduce_states
|
|
from homeassistant.core import Context, HomeAssistant, State
|
|
|
|
|
|
async def test_reproduce_group(hass: HomeAssistant) -> None:
|
|
"""Test reproduce_state with group."""
|
|
context = Context()
|
|
|
|
def clone_state(state, entity_id):
|
|
"""Return a cloned state with different entity_id."""
|
|
return State(
|
|
entity_id,
|
|
state.state,
|
|
state.attributes,
|
|
last_changed=state.last_changed,
|
|
last_updated=state.last_updated,
|
|
context=state.context,
|
|
)
|
|
|
|
with patch(
|
|
"homeassistant.components.group.reproduce_state.async_reproduce_state"
|
|
) as fun:
|
|
fun.return_value = Future()
|
|
fun.return_value.set_result(None)
|
|
|
|
hass.states.async_set(
|
|
"group.test",
|
|
"off",
|
|
{"entity_id": ["light.test1", "light.test2", "switch.test1"]},
|
|
)
|
|
hass.states.async_set("light.test1", "off")
|
|
hass.states.async_set("light.test2", "off")
|
|
hass.states.async_set("switch.test1", "off")
|
|
|
|
state = State("group.test", "on")
|
|
|
|
await async_reproduce_states(hass, [state], context=context)
|
|
|
|
fun.assert_called_once_with(
|
|
hass,
|
|
ANY,
|
|
context=context,
|
|
reproduce_options=None,
|
|
)
|
|
entities = fun.call_args[0][1]
|
|
|
|
assert entities[0].entity_id == "light.test1"
|
|
assert entities[1].entity_id == "light.test2"
|
|
assert entities[2].entity_id == "switch.test1"
|