Add tests

This commit is contained in:
epenet 2025-07-21 10:15:14 +00:00
parent 82c64febc5
commit 3f840ab446

View File

@ -8,9 +8,11 @@ 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.number import DOMAIN as NUMBER_DOMAIN, SERVICE_SET_VALUE
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 +55,67 @@ 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",
["mal_alarm_host"],
)
async def test_set_value(
hass: HomeAssistant,
mock_manager: ManagerCompat,
mock_config_entry: MockConfigEntry,
mock_device: CustomerDevice,
) -> None:
"""Test set value."""
entity_id = "number.multifunction_alarm_arm_delay"
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(
NUMBER_DOMAIN,
SERVICE_SET_VALUE,
{
"entity_id": entity_id,
"value": 18,
},
)
await hass.async_block_till_done()
mock_manager.send_commands.assert_called_once_with(
mock_device.id, [{"code": "delay_set", "value": 18}]
)
@pytest.mark.parametrize(
"mock_device_code",
["mal_alarm_host"],
)
async def test_set_value_no_function(
hass: HomeAssistant,
mock_manager: ManagerCompat,
mock_config_entry: MockConfigEntry,
mock_device: CustomerDevice,
) -> None:
"""Test set value when no function available."""
# Mock a device with delay_set in status but not in function or status_range
mock_device.function.pop("delay_set")
mock_device.status_range.pop("delay_set")
entity_id = "number.multifunction_alarm_arm_delay"
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 err:
await hass.services.async_call(
NUMBER_DOMAIN,
SERVICE_SET_VALUE,
{
"entity_id": entity_id,
"value": 18,
},
blocking=True,
)
assert err.value.translation_key == "action_dpcode_not_found"