async def test_outlet_set_state(hass, hk_driver, events): """Test if Outlet accessory and HA are updated accordingly.""" entity_id = "switch.outlet_test" hass.states.async_set(entity_id, None) await hass.async_block_till_done() acc = Outlet(hass, hk_driver, "Outlet", entity_id, 2, None) await acc.run() await hass.async_block_till_done() assert acc.aid == 2 assert acc.category == 7 # Outlet assert acc.char_on.value is False assert acc.char_outlet_in_use.value is True hass.states.async_set(entity_id, STATE_ON) await hass.async_block_till_done() assert acc.char_on.value is True hass.states.async_set(entity_id, STATE_OFF) await hass.async_block_till_done() assert acc.char_on.value is False # Set from HomeKit call_turn_on = async_mock_service(hass, "switch", "turn_on") call_turn_off = async_mock_service(hass, "switch", "turn_off") await hass.async_add_executor_job(acc.char_on.client_update_value, True) await hass.async_block_till_done() assert call_turn_on assert call_turn_on[0].data[ATTR_ENTITY_ID] == entity_id assert len(events) == 1 assert events[-1].data[ATTR_VALUE] is None await hass.async_add_executor_job(acc.char_on.client_update_value, False) await hass.async_block_till_done() assert call_turn_off assert call_turn_off[0].data[ATTR_ENTITY_ID] == entity_id assert len(events) == 2 assert events[-1].data[ATTR_VALUE] is None
async def test_outlet_set_state(hass, hk_driver): """Test if Outlet accessory and HA are updated accordingly.""" entity_id = 'switch.outlet_test' hass.states.async_set(entity_id, None) await hass.async_block_till_done() acc = Outlet(hass, hk_driver, 'Outlet', entity_id, 2, None) await hass.async_add_job(acc.run) await hass.async_block_till_done() assert acc.aid == 2 assert acc.category == 7 # Outlet assert acc.char_on.value is False assert acc.char_outlet_in_use.value is True hass.states.async_set(entity_id, STATE_ON) await hass.async_block_till_done() assert acc.char_on.value is True hass.states.async_set(entity_id, STATE_OFF) await hass.async_block_till_done() assert acc.char_on.value is False # Set from HomeKit call_turn_on = async_mock_service(hass, 'switch', 'turn_on') call_turn_off = async_mock_service(hass, 'switch', 'turn_off') await hass.async_add_job(acc.char_on.client_update_value, True) await hass.async_block_till_done() assert call_turn_on assert call_turn_on[0].data[ATTR_ENTITY_ID] == entity_id await hass.async_add_job(acc.char_on.client_update_value, False) await hass.async_block_till_done() assert call_turn_off assert call_turn_off[0].data[ATTR_ENTITY_ID] == entity_id