Fix zwave_js.set_value schema (#51114)
* fix zwave_js.set_value schema * wrap all schemas in vol.Schema * readd removed assertions
This commit is contained in:
parent
3e7729faf2
commit
877d3e38b4
2 changed files with 75 additions and 46 deletions
|
@ -67,9 +67,12 @@ class ZWaveServices:
|
|||
const.DOMAIN,
|
||||
const.SERVICE_SET_CONFIG_PARAMETER,
|
||||
self.async_set_config_parameter,
|
||||
schema=vol.All(
|
||||
schema=vol.Schema(
|
||||
vol.All(
|
||||
{
|
||||
vol.Optional(ATTR_DEVICE_ID): vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(ATTR_DEVICE_ID): vol.All(
|
||||
cv.ensure_list, [cv.string]
|
||||
),
|
||||
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
|
||||
vol.Required(const.ATTR_CONFIG_PARAMETER): vol.Any(
|
||||
vol.Coerce(int), cv.string
|
||||
|
@ -84,15 +87,19 @@ class ZWaveServices:
|
|||
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
|
||||
parameter_name_does_not_need_bitmask,
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
self._hass.services.async_register(
|
||||
const.DOMAIN,
|
||||
const.SERVICE_BULK_SET_PARTIAL_CONFIG_PARAMETERS,
|
||||
self.async_bulk_set_partial_config_parameters,
|
||||
schema=vol.All(
|
||||
schema=vol.Schema(
|
||||
vol.All(
|
||||
{
|
||||
vol.Optional(ATTR_DEVICE_ID): vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(ATTR_DEVICE_ID): vol.All(
|
||||
cv.ensure_list, [cv.string]
|
||||
),
|
||||
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
|
||||
vol.Required(const.ATTR_CONFIG_PARAMETER): vol.Coerce(int),
|
||||
vol.Required(const.ATTR_CONFIG_VALUE): vol.Any(
|
||||
|
@ -106,6 +113,7 @@ class ZWaveServices:
|
|||
},
|
||||
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
self._hass.services.async_register(
|
||||
|
@ -125,11 +133,16 @@ class ZWaveServices:
|
|||
const.SERVICE_SET_VALUE,
|
||||
self.async_set_value,
|
||||
schema=vol.Schema(
|
||||
vol.All(
|
||||
{
|
||||
vol.Optional(ATTR_DEVICE_ID): vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(ATTR_DEVICE_ID): vol.All(
|
||||
cv.ensure_list, [cv.string]
|
||||
),
|
||||
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids,
|
||||
vol.Required(const.ATTR_COMMAND_CLASS): vol.Coerce(int),
|
||||
vol.Required(const.ATTR_PROPERTY): vol.Any(vol.Coerce(int), str),
|
||||
vol.Required(const.ATTR_PROPERTY): vol.Any(
|
||||
vol.Coerce(int), str
|
||||
),
|
||||
vol.Optional(const.ATTR_PROPERTY_KEY): vol.Any(
|
||||
vol.Coerce(int), str
|
||||
),
|
||||
|
@ -141,6 +154,7 @@ class ZWaveServices:
|
|||
},
|
||||
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
async def async_set_config_parameter(self, service: ServiceCall) -> None:
|
||||
|
|
|
@ -599,6 +599,7 @@ async def test_set_value(hass, client, climate_danfoss_lc_13, integration):
|
|||
)
|
||||
|
||||
assert len(client.async_send_command.call_args_list) == 1
|
||||
|
||||
args = client.async_send_command.call_args[0][0]
|
||||
assert args["command"] == "node.set_value"
|
||||
assert args["nodeId"] == 5
|
||||
|
@ -619,3 +620,17 @@ async def test_set_value(hass, client, climate_danfoss_lc_13, integration):
|
|||
"value": 0,
|
||||
}
|
||||
assert args["value"] == 2
|
||||
|
||||
# Test missing device and entities keys
|
||||
with pytest.raises(vol.MultipleInvalid):
|
||||
await hass.services.async_call(
|
||||
DOMAIN,
|
||||
SERVICE_SET_VALUE,
|
||||
{
|
||||
ATTR_COMMAND_CLASS: 117,
|
||||
ATTR_PROPERTY: "local",
|
||||
ATTR_VALUE: 2,
|
||||
ATTR_WAIT_FOR_RESULT: True,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
|
Loading…
Add table
Reference in a new issue