"""The tests for reproduction of state.""" from asyncio import Future from unittest.mock import patch from homeassistant.components.group import async_reproduce_states from homeassistant.core import Context, State async def test_reproduce_group(hass): """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.helpers.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) fun.assert_called_once_with( hass, [clone_state(state, 'light.test1'), clone_state(state, 'light.test2'), clone_state(state, 'switch.test1')], blocking=True, context=context)