async def async_set_cover_position(self, **kwargs: Any) -> None: """Set the cover position.""" await self._hub.bond.action( self._device.device_id, Action.set_position(_hass_to_bond_position(kwargs[ATTR_POSITION])), )
async def test_set_position_cover(hass: core.HomeAssistant): """Tests that set position cover command delegates to API.""" await setup_platform( hass, COVER_DOMAIN, shades_with_position("name-1"), bond_device_id="test-device-id", ) with patch_bond_action() as mock_hold, patch_bond_device_state( return_value={ "position": 0, "open": 1 }): await hass.services.async_call( COVER_DOMAIN, SERVICE_SET_COVER_POSITION, { ATTR_ENTITY_ID: "cover.name_1", ATTR_POSITION: 100 }, blocking=True, ) async_fire_time_changed(hass, utcnow() + timedelta(seconds=30)) await hass.async_block_till_done() mock_hold.assert_called_once_with("test-device-id", Action.set_position(0)) entity_state = hass.states.get("cover.name_1") assert entity_state.state == STATE_OPEN assert entity_state.attributes[ATTR_CURRENT_POSITION] == 100 with patch_bond_action() as mock_hold, patch_bond_device_state( return_value={ "position": 100, "open": 0 }): await hass.services.async_call( COVER_DOMAIN, SERVICE_SET_COVER_POSITION, { ATTR_ENTITY_ID: "cover.name_1", ATTR_POSITION: 0 }, blocking=True, ) async_fire_time_changed(hass, utcnow() + timedelta(seconds=30)) await hass.async_block_till_done() mock_hold.assert_called_once_with("test-device-id", Action.set_position(100)) entity_state = hass.states.get("cover.name_1") assert entity_state.state == STATE_CLOSED assert entity_state.attributes[ATTR_CURRENT_POSITION] == 0 with patch_bond_action() as mock_hold, patch_bond_device_state( return_value={ "position": 40, "open": 1 }): await hass.services.async_call( COVER_DOMAIN, SERVICE_SET_COVER_POSITION, { ATTR_ENTITY_ID: "cover.name_1", ATTR_POSITION: 60 }, blocking=True, ) async_fire_time_changed(hass, utcnow() + timedelta(seconds=30)) await hass.async_block_till_done() mock_hold.assert_called_once_with("test-device-id", Action.set_position(40)) entity_state = hass.states.get("cover.name_1") assert entity_state.state == STATE_OPEN assert entity_state.attributes[ATTR_CURRENT_POSITION] == 60