Add select service tests to Tuya

This commit is contained in:
epenet 2025-07-21 07:14:29 +00:00
parent dd399ef59f
commit ca64366134

View File

@ -8,9 +8,14 @@ import pytest
from syrupy.assertion import SnapshotAssertion from syrupy.assertion import SnapshotAssertion
from tuya_sharing import CustomerDevice from tuya_sharing import CustomerDevice
from homeassistant.components.select import (
DOMAIN as SELECT_DOMAIN,
SERVICE_SELECT_OPTION,
)
from homeassistant.components.tuya import ManagerCompat from homeassistant.components.tuya import ManagerCompat
from homeassistant.const import Platform from homeassistant.const import Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ServiceValidationError
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from . import DEVICE_MOCKS, initialize_entry from . import DEVICE_MOCKS, initialize_entry
@ -53,3 +58,62 @@ async def test_platform_setup_no_discovery(
assert not er.async_entries_for_config_entry( assert not er.async_entries_for_config_entry(
entity_registry, mock_config_entry.entry_id entity_registry, mock_config_entry.entry_id
) )
@pytest.mark.parametrize(
"mock_device_code",
["cl_am43_corded_motor_zigbee_cover"],
)
async def test_select_option(
hass: HomeAssistant,
mock_manager: ManagerCompat,
mock_config_entry: MockConfigEntry,
mock_device: CustomerDevice,
) -> None:
"""Test fan mode with windspeed."""
entity_id = "select.kitchen_blinds_motor_mode"
await initialize_entry(hass, mock_manager, mock_config_entry, mock_device)
state = hass.states.get(entity_id)
assert state is not None, f"{entity_id} does not exist"
await hass.services.async_call(
SELECT_DOMAIN,
SERVICE_SELECT_OPTION,
{
"entity_id": entity_id,
"option": "forward",
},
)
await hass.async_block_till_done()
mock_manager.send_commands.assert_called_once_with(
mock_device.id, [{"code": "control_back_mode", "value": "forward"}]
)
@pytest.mark.parametrize(
"mock_device_code",
["cl_am43_corded_motor_zigbee_cover"],
)
async def test_select_invalid_option(
hass: HomeAssistant,
mock_manager: ManagerCompat,
mock_config_entry: MockConfigEntry,
mock_device: CustomerDevice,
) -> None:
"""Test fan mode with windspeed."""
entity_id = "select.kitchen_blinds_motor_mode"
await initialize_entry(hass, mock_manager, mock_config_entry, mock_device)
state = hass.states.get(entity_id)
assert state is not None, f"{entity_id} does not exist"
with pytest.raises(ServiceValidationError) as exc:
await hass.services.async_call(
SELECT_DOMAIN,
SERVICE_SELECT_OPTION,
{
"entity_id": entity_id,
"option": "hello",
},
blocking=True,
)
assert exc.value.translation_key == "not_valid_option"