mirror of
https://github.com/home-assistant/core.git
synced 2025-07-26 06:37:52 +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()):
|
.values()):
|
||||||
if value.index != param:
|
if value.index != param:
|
||||||
continue
|
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)
|
value.data = str(selection)
|
||||||
_LOGGER.info("Setting config parameter %s on Node %s "
|
_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))
|
str(selection))
|
||||||
return
|
return
|
||||||
if value.type == const.TYPE_BUTTON:
|
if value.type == const.TYPE_BUTTON:
|
||||||
|
@ -1114,7 +1114,7 @@ class TestZWaveServices(unittest.TestCase):
|
|||||||
|
|
||||||
def test_set_config_parameter(self):
|
def test_set_config_parameter(self):
|
||||||
"""Test zwave set_config_parameter service."""
|
"""Test zwave set_config_parameter service."""
|
||||||
value = MockValue(
|
value_byte = MockValue(
|
||||||
index=12,
|
index=12,
|
||||||
command_class=const.COMMAND_CLASS_CONFIGURATION,
|
command_class=const.COMMAND_CLASS_CONFIGURATION,
|
||||||
type=const.TYPE_BYTE,
|
type=const.TYPE_BYTE,
|
||||||
@ -1125,23 +1125,43 @@ class TestZWaveServices(unittest.TestCase):
|
|||||||
type=const.TYPE_LIST,
|
type=const.TYPE_LIST,
|
||||||
data_items=['item1', 'item2', 'item3'],
|
data_items=['item1', 'item2', 'item3'],
|
||||||
)
|
)
|
||||||
|
value_button = MockValue(
|
||||||
|
index=14,
|
||||||
|
command_class=const.COMMAND_CLASS_CONFIGURATION,
|
||||||
|
type=const.TYPE_BUTTON,
|
||||||
|
)
|
||||||
value_list_int = MockValue(
|
value_list_int = MockValue(
|
||||||
index=15,
|
index=15,
|
||||||
command_class=const.COMMAND_CLASS_CONFIGURATION,
|
command_class=const.COMMAND_CLASS_CONFIGURATION,
|
||||||
type=const.TYPE_LIST,
|
type=const.TYPE_LIST,
|
||||||
data_items=['1', '2', '3'],
|
data_items=['1', '2', '3'],
|
||||||
)
|
)
|
||||||
value_button = MockValue(
|
value_bool = MockValue(
|
||||||
index=14,
|
index=16,
|
||||||
command_class=const.COMMAND_CLASS_CONFIGURATION,
|
command_class=const.COMMAND_CLASS_CONFIGURATION,
|
||||||
type=const.TYPE_BUTTON,
|
type=const.TYPE_BOOL,
|
||||||
)
|
)
|
||||||
node = MockNode(node_id=14)
|
node = MockNode(node_id=14)
|
||||||
node.get_values.return_value = {12: value, 13: value_list,
|
node.get_values.return_value = {
|
||||||
14: value_button,
|
12: value_byte,
|
||||||
15: value_list_int}
|
13: value_list,
|
||||||
|
14: value_button,
|
||||||
|
15: value_list_int,
|
||||||
|
16: value_bool
|
||||||
|
}
|
||||||
self.zwave_network.nodes = {14: node}
|
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', {
|
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||||
const.ATTR_NODE_ID: 14,
|
const.ATTR_NODE_ID: 14,
|
||||||
const.ATTR_CONFIG_PARAMETER: 13,
|
const.ATTR_CONFIG_PARAMETER: 13,
|
||||||
@ -1151,24 +1171,7 @@ class TestZWaveServices(unittest.TestCase):
|
|||||||
|
|
||||||
assert value_list.data == 'item3'
|
assert value_list.data == 'item3'
|
||||||
|
|
||||||
self.hass.services.call('zwave', 'set_config_parameter', {
|
# Button
|
||||||
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
|
|
||||||
|
|
||||||
self.hass.services.call('zwave', 'set_config_parameter', {
|
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||||
const.ATTR_NODE_ID: 14,
|
const.ATTR_NODE_ID: 14,
|
||||||
const.ATTR_CONFIG_PARAMETER: 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.pressButton.called
|
||||||
assert self.zwave_network.manager.releaseButton.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', {
|
self.hass.services.call('zwave', 'set_config_parameter', {
|
||||||
const.ATTR_NODE_ID: 14,
|
const.ATTR_NODE_ID: 14,
|
||||||
const.ATTR_CONFIG_PARAMETER: 19,
|
const.ATTR_CONFIG_PARAMETER: 19,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user