mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Ensure Boolean configuration values are handled correctly. (#22810)
This commit is contained in:
parent
7251e29e60
commit
dbcdc32f05
@ -522,10 +522,16 @@ async def async_setup_entry(hass, config_entry):
|
||||
.values()):
|
||||
if value.index != param:
|
||||
continue
|
||||
if value.type in [const.TYPE_LIST, const.TYPE_BOOL]:
|
||||
if value.type == const.TYPE_BOOL:
|
||||
value.data = int(selection == 'True')
|
||||
_LOGGER.info("Setting config parameter %s on Node %s "
|
||||
"with bool selection %s", param, node_id,
|
||||
str(selection))
|
||||
return
|
||||
if value.type == const.TYPE_LIST:
|
||||
value.data = str(selection)
|
||||
_LOGGER.info("Setting config parameter %s on Node %s "
|
||||
"with list/bool selection %s", param, node_id,
|
||||
"with list selection %s", param, node_id,
|
||||
str(selection))
|
||||
return
|
||||
if value.type == const.TYPE_BUTTON:
|
||||
|
@ -1114,7 +1114,7 @@ class TestZWaveServices(unittest.TestCase):
|
||||
|
||||
def test_set_config_parameter(self):
|
||||
"""Test zwave set_config_parameter service."""
|
||||
value = MockValue(
|
||||
value_byte = MockValue(
|
||||
index=12,
|
||||
command_class=const.COMMAND_CLASS_CONFIGURATION,
|
||||
type=const.TYPE_BYTE,
|
||||
@ -1125,23 +1125,43 @@ class TestZWaveServices(unittest.TestCase):
|
||||
type=const.TYPE_LIST,
|
||||
data_items=['item1', 'item2', 'item3'],
|
||||
)
|
||||
value_button = MockValue(
|
||||
index=14,
|
||||
command_class=const.COMMAND_CLASS_CONFIGURATION,
|
||||
type=const.TYPE_BUTTON,
|
||||
)
|
||||
value_list_int = MockValue(
|
||||
index=15,
|
||||
command_class=const.COMMAND_CLASS_CONFIGURATION,
|
||||
type=const.TYPE_LIST,
|
||||
data_items=['1', '2', '3'],
|
||||
)
|
||||
value_button = MockValue(
|
||||
index=14,
|
||||
value_bool = MockValue(
|
||||
index=16,
|
||||
command_class=const.COMMAND_CLASS_CONFIGURATION,
|
||||
type=const.TYPE_BUTTON,
|
||||
type=const.TYPE_BOOL,
|
||||
)
|
||||
node = MockNode(node_id=14)
|
||||
node.get_values.return_value = {12: value, 13: value_list,
|
||||
14: value_button,
|
||||
15: value_list_int}
|
||||
node.get_values.return_value = {
|
||||
12: value_byte,
|
||||
13: value_list,
|
||||
14: value_button,
|
||||
15: value_list_int,
|
||||
16: value_bool
|
||||
}
|
||||
self.zwave_network.nodes = {14: node}
|
||||
|
||||
# Byte
|
||||
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||
const.ATTR_NODE_ID: 14,
|
||||
const.ATTR_CONFIG_PARAMETER: 12,
|
||||
const.ATTR_CONFIG_VALUE: 7,
|
||||
})
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert value_byte.data == 7
|
||||
|
||||
# List
|
||||
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||
const.ATTR_NODE_ID: 14,
|
||||
const.ATTR_CONFIG_PARAMETER: 13,
|
||||
@ -1151,24 +1171,7 @@ class TestZWaveServices(unittest.TestCase):
|
||||
|
||||
assert value_list.data == 'item3'
|
||||
|
||||
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||
const.ATTR_NODE_ID: 14,
|
||||
const.ATTR_CONFIG_PARAMETER: 15,
|
||||
const.ATTR_CONFIG_VALUE: 3,
|
||||
})
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert value_list_int.data == '3'
|
||||
|
||||
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||
const.ATTR_NODE_ID: 14,
|
||||
const.ATTR_CONFIG_PARAMETER: 12,
|
||||
const.ATTR_CONFIG_VALUE: 7,
|
||||
})
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert value.data == 7
|
||||
|
||||
# Button
|
||||
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||
const.ATTR_NODE_ID: 14,
|
||||
const.ATTR_CONFIG_PARAMETER: 14,
|
||||
@ -1179,6 +1182,37 @@ class TestZWaveServices(unittest.TestCase):
|
||||
assert self.zwave_network.manager.pressButton.called
|
||||
assert self.zwave_network.manager.releaseButton.called
|
||||
|
||||
# List of Ints
|
||||
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||
const.ATTR_NODE_ID: 14,
|
||||
const.ATTR_CONFIG_PARAMETER: 15,
|
||||
const.ATTR_CONFIG_VALUE: 3,
|
||||
})
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert value_list_int.data == '3'
|
||||
|
||||
# Boolean Truthy
|
||||
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||
const.ATTR_NODE_ID: 14,
|
||||
const.ATTR_CONFIG_PARAMETER: 16,
|
||||
const.ATTR_CONFIG_VALUE: 'True',
|
||||
})
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert value_bool.data == 1
|
||||
|
||||
# Boolean Falsy
|
||||
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||
const.ATTR_NODE_ID: 14,
|
||||
const.ATTR_CONFIG_PARAMETER: 16,
|
||||
const.ATTR_CONFIG_VALUE: 'False',
|
||||
})
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert value_bool.data == 0
|
||||
|
||||
# Different Parameter Size
|
||||
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||
const.ATTR_NODE_ID: 14,
|
||||
const.ATTR_CONFIG_PARAMETER: 19,
|
||||
|
Loading…
x
Reference in New Issue
Block a user