def test_window_open_close_stop(self): """Test if accessory and HA are updated accordingly.""" window_cover = 'cover.window' self.hass.states.set(window_cover, STATE_UNKNOWN, {ATTR_SUPPORTED_FEATURES: SUPPORT_STOP}) acc = WindowCoveringBasic(self.hass, 'Cover', window_cover, 2, config=None) acc.run() # Set from HomeKit acc.char_target_position.client_update_value(25) self.hass.block_till_done() self.assertEqual( self.events[0].data[ATTR_SERVICE], 'close_cover') self.assertEqual(acc.char_current_position.value, 0) self.assertEqual(acc.char_target_position.value, 0) self.assertEqual(acc.char_position_state.value, 2) # Set from HomeKit acc.char_target_position.client_update_value(90) self.hass.block_till_done() self.assertEqual( self.events[1].data[ATTR_SERVICE], 'open_cover') self.assertEqual(acc.char_current_position.value, 100) self.assertEqual(acc.char_target_position.value, 100) self.assertEqual(acc.char_position_state.value, 2) # Set from HomeKit acc.char_target_position.client_update_value(55) self.hass.block_till_done() self.assertEqual( self.events[2].data[ATTR_SERVICE], 'stop_cover') self.assertEqual(acc.char_current_position.value, 50) self.assertEqual(acc.char_target_position.value, 50) self.assertEqual(acc.char_position_state.value, 2)
async def test_windowcovering_basic_restore(hass, hk_driver, events): """Test setting up an entity from state in the event registry.""" hass.state = CoreState.not_running registry = er.async_get(hass) registry.async_get_or_create( "cover", "generic", "1234", suggested_object_id="simple", ) registry.async_get_or_create( "cover", "generic", "9012", suggested_object_id="all_info_set", capabilities={}, supported_features=SUPPORT_STOP, original_device_class="mock-device-class", ) hass.bus.async_fire(EVENT_HOMEASSISTANT_START, {}) await hass.async_block_till_done() acc = WindowCoveringBasic(hass, hk_driver, "Cover", "cover.simple", 2, None) assert acc.category == 14 assert acc.char_current_position is not None assert acc.char_target_position is not None assert acc.char_position_state is not None acc = WindowCoveringBasic(hass, hk_driver, "Cover", "cover.all_info_set", 2, None) assert acc.category == 14 assert acc.char_current_position is not None assert acc.char_target_position is not None assert acc.char_position_state is not None
async def test_windowcovering_open_close_stop(hass, hk_driver, events): """Test if accessory and HA are updated accordingly.""" entity_id = "cover.window" hass.states.async_set(entity_id, STATE_UNKNOWN, {ATTR_SUPPORTED_FEATURES: SUPPORT_STOP}) acc = WindowCoveringBasic(hass, hk_driver, "Cover", entity_id, 2, None) await acc.run() await hass.async_block_till_done() # Set from HomeKit call_close_cover = async_mock_service(hass, DOMAIN, "close_cover") call_open_cover = async_mock_service(hass, DOMAIN, "open_cover") call_stop_cover = async_mock_service(hass, DOMAIN, "stop_cover") await hass.async_add_executor_job( acc.char_target_position.client_update_value, 25) await hass.async_block_till_done() assert call_close_cover assert call_close_cover[0].data[ATTR_ENTITY_ID] == entity_id assert acc.char_current_position.value == 0 assert acc.char_target_position.value == 0 assert acc.char_position_state.value == 2 assert len(events) == 1 assert events[-1].data[ATTR_VALUE] is None await hass.async_add_executor_job( acc.char_target_position.client_update_value, 90) await hass.async_block_till_done() assert call_open_cover assert call_open_cover[0].data[ATTR_ENTITY_ID] == entity_id assert acc.char_current_position.value == 100 assert acc.char_target_position.value == 100 assert acc.char_position_state.value == 2 assert len(events) == 2 assert events[-1].data[ATTR_VALUE] is None await hass.async_add_executor_job( acc.char_target_position.client_update_value, 55) await hass.async_block_till_done() assert call_stop_cover assert call_stop_cover[0].data[ATTR_ENTITY_ID] == entity_id assert acc.char_current_position.value == 50 assert acc.char_target_position.value == 50 assert acc.char_position_state.value == 2 assert len(events) == 3 assert events[-1].data[ATTR_VALUE] is None
async def test_windowcovering_open_close(hass, hk_driver, events): """Test if accessory and HA are updated accordingly.""" entity_id = "cover.window" hass.states.async_set(entity_id, STATE_UNKNOWN, {ATTR_SUPPORTED_FEATURES: 0}) acc = WindowCoveringBasic(hass, hk_driver, "Cover", entity_id, 2, None) await acc.run() await hass.async_block_till_done() assert acc.aid == 2 assert acc.category == 14 # WindowCovering assert acc.char_current_position.value == 0 assert acc.char_target_position.value == 0 assert acc.char_position_state.value == 2 hass.states.async_set(entity_id, STATE_UNKNOWN) await hass.async_block_till_done() assert acc.char_current_position.value == 0 assert acc.char_target_position.value == 0 assert acc.char_position_state.value == 2 hass.states.async_set(entity_id, STATE_OPENING) await hass.async_block_till_done() assert acc.char_current_position.value == 0 assert acc.char_target_position.value == 0 assert acc.char_position_state.value == 1 hass.states.async_set(entity_id, STATE_OPEN) await hass.async_block_till_done() assert acc.char_current_position.value == 100 assert acc.char_target_position.value == 100 assert acc.char_position_state.value == 2 hass.states.async_set(entity_id, STATE_CLOSING) await hass.async_block_till_done() assert acc.char_current_position.value == 100 assert acc.char_target_position.value == 100 assert acc.char_position_state.value == 0 hass.states.async_set(entity_id, STATE_CLOSED) await hass.async_block_till_done() assert acc.char_current_position.value == 0 assert acc.char_target_position.value == 0 assert acc.char_position_state.value == 2 # Set from HomeKit call_close_cover = async_mock_service(hass, DOMAIN, "close_cover") call_open_cover = async_mock_service(hass, DOMAIN, "open_cover") acc.char_target_position.client_update_value(25) await hass.async_block_till_done() assert call_close_cover assert call_close_cover[0].data[ATTR_ENTITY_ID] == entity_id assert acc.char_current_position.value == 0 assert acc.char_target_position.value == 0 assert acc.char_position_state.value == 2 assert len(events) == 1 assert events[-1].data[ATTR_VALUE] is None acc.char_target_position.client_update_value(90) await hass.async_block_till_done() assert call_open_cover[0] assert call_open_cover[0].data[ATTR_ENTITY_ID] == entity_id assert acc.char_current_position.value == 100 assert acc.char_target_position.value == 100 assert acc.char_position_state.value == 2 assert len(events) == 2 assert events[-1].data[ATTR_VALUE] is None acc.char_target_position.client_update_value(55) await hass.async_block_till_done() assert call_open_cover[1] assert call_open_cover[1].data[ATTR_ENTITY_ID] == entity_id assert acc.char_current_position.value == 100 assert acc.char_target_position.value == 100 assert acc.char_position_state.value == 2 assert len(events) == 3 assert events[-1].data[ATTR_VALUE] is None