core/tests/components/zwave/test_cover.py

288 lines
9.5 KiB
Python
Raw Normal View History

2017-03-16 05:06:37 +00:00
"""Test Z-Wave cover devices."""
from unittest.mock import MagicMock
2017-03-16 05:06:37 +00:00
from homeassistant.components.cover import SUPPORT_CLOSE, SUPPORT_OPEN
2019-02-08 01:27:31 +00:00
from homeassistant.components.zwave import (
2019-07-31 19:25:30 +00:00
CONF_INVERT_OPENCLOSE_BUTTONS,
CONF_INVERT_PERCENT,
const,
cover,
2019-07-31 19:25:30 +00:00
)
2017-03-16 05:06:37 +00:00
from tests.mock.zwave import MockEntityValues, MockNode, MockValue, value_changed
2017-03-16 05:06:37 +00:00
def test_get_device_detects_none(hass, mock_openzwave):
2017-03-16 05:06:37 +00:00
"""Test device returns none."""
node = MockNode()
value = MockValue(data=0, node=node)
values = MockEntityValues(primary=value, node=node)
2019-07-31 19:25:30 +00:00
device = cover.get_device(hass=hass, node=node, values=values, node_config={})
2017-03-16 05:06:37 +00:00
assert device is None
def test_get_device_detects_rollershutter(hass, mock_openzwave):
2017-03-16 05:06:37 +00:00
"""Test device returns rollershutter."""
2019-02-08 01:27:31 +00:00
hass.data[const.DATA_NETWORK] = MagicMock()
2017-03-16 05:06:37 +00:00
node = MockNode()
2019-07-31 19:25:30 +00:00
value = MockValue(
data=0, node=node, command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL
)
2017-03-16 05:06:37 +00:00
values = MockEntityValues(primary=value, open=None, close=None, node=node)
2019-07-31 19:25:30 +00:00
device = cover.get_device(hass=hass, node=node, values=values, node_config={})
2019-02-08 01:27:31 +00:00
assert isinstance(device, cover.ZwaveRollershutter)
2017-03-16 05:06:37 +00:00
def test_get_device_detects_garagedoor_switch(hass, mock_openzwave):
2017-03-16 05:06:37 +00:00
"""Test device returns garage door."""
node = MockNode()
2019-07-31 19:25:30 +00:00
value = MockValue(
data=False, node=node, command_class=const.COMMAND_CLASS_SWITCH_BINARY
)
values = MockEntityValues(primary=value, node=node)
2019-07-31 19:25:30 +00:00
device = cover.get_device(hass=hass, node=node, values=values, node_config={})
2019-02-08 01:27:31 +00:00
assert isinstance(device, cover.ZwaveGarageDoorSwitch)
assert device.device_class == "garage"
assert device.supported_features == SUPPORT_OPEN | SUPPORT_CLOSE
def test_get_device_detects_garagedoor_barrier(hass, mock_openzwave):
"""Test device returns garage door."""
node = MockNode()
2019-07-31 19:25:30 +00:00
value = MockValue(
data="Closed", node=node, command_class=const.COMMAND_CLASS_BARRIER_OPERATOR
)
2017-03-16 05:06:37 +00:00
values = MockEntityValues(primary=value, node=node)
2019-07-31 19:25:30 +00:00
device = cover.get_device(hass=hass, node=node, values=values, node_config={})
2019-02-08 01:27:31 +00:00
assert isinstance(device, cover.ZwaveGarageDoorBarrier)
2017-03-16 05:06:37 +00:00
assert device.device_class == "garage"
assert device.supported_features == SUPPORT_OPEN | SUPPORT_CLOSE
def test_roller_no_position_workaround(hass, mock_openzwave):
2017-03-16 05:06:37 +00:00
"""Test position changed."""
2019-02-08 01:27:31 +00:00
hass.data[const.DATA_NETWORK] = MagicMock()
2019-07-31 19:25:30 +00:00
node = MockNode(manufacturer_id="0047", product_type="5a52")
value = MockValue(
data=45, node=node, command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL
)
2017-03-16 05:06:37 +00:00
values = MockEntityValues(primary=value, open=None, close=None, node=node)
2019-07-31 19:25:30 +00:00
device = cover.get_device(hass=hass, node=node, values=values, node_config={})
2017-03-16 05:06:37 +00:00
assert device.current_cover_position is None
def test_roller_value_changed(hass, mock_openzwave):
2017-03-16 05:06:37 +00:00
"""Test position changed."""
2019-02-08 01:27:31 +00:00
hass.data[const.DATA_NETWORK] = MagicMock()
2017-03-16 05:06:37 +00:00
node = MockNode()
2019-07-31 19:25:30 +00:00
value = MockValue(
data=None, node=node, command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL
)
2017-03-16 05:06:37 +00:00
values = MockEntityValues(primary=value, open=None, close=None, node=node)
2019-07-31 19:25:30 +00:00
device = cover.get_device(hass=hass, node=node, values=values, node_config={})
2017-03-16 05:06:37 +00:00
assert device.current_cover_position is None
assert device.is_closed is None
value.data = 2
value_changed(value)
assert device.current_cover_position == 0
assert device.is_closed
value.data = 35
value_changed(value)
assert device.current_cover_position == 35
assert not device.is_closed
value.data = 97
value_changed(value)
assert device.current_cover_position == 100
assert not device.is_closed
def test_roller_commands(hass, mock_openzwave):
2017-03-16 05:06:37 +00:00
"""Test position changed."""
2019-02-08 01:27:31 +00:00
mock_network = hass.data[const.DATA_NETWORK] = MagicMock()
2017-03-16 05:06:37 +00:00
node = MockNode()
2019-07-31 19:25:30 +00:00
value = MockValue(
data=50, node=node, command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL
)
2017-03-16 05:06:37 +00:00
open_value = MockValue(data=False, node=node)
close_value = MockValue(data=False, node=node)
2019-07-31 19:25:30 +00:00
values = MockEntityValues(
primary=value, open=open_value, close=close_value, node=node
)
device = cover.get_device(hass=hass, node=node, values=values, node_config={})
2017-03-16 05:06:37 +00:00
device.set_cover_position(position=25)
2017-03-16 05:06:37 +00:00
assert node.set_dimmer.called
value_id, brightness = node.set_dimmer.mock_calls[0][1]
assert value_id == value.value_id
assert brightness == 25
device.open_cover()
assert mock_network.manager.pressButton.called
2019-10-29 06:32:34 +00:00
(value_id,) = mock_network.manager.pressButton.mock_calls.pop(0)[1]
2017-03-16 05:06:37 +00:00
assert value_id == open_value.value_id
device.close_cover()
assert mock_network.manager.pressButton.called
2019-10-29 06:32:34 +00:00
(value_id,) = mock_network.manager.pressButton.mock_calls.pop(0)[1]
2017-03-16 05:06:37 +00:00
assert value_id == close_value.value_id
device.stop_cover()
assert mock_network.manager.releaseButton.called
2019-10-29 06:32:34 +00:00
(value_id,) = mock_network.manager.releaseButton.mock_calls.pop(0)[1]
2017-03-16 05:06:37 +00:00
assert value_id == open_value.value_id
def test_roller_invert_percent(hass, mock_openzwave):
"""Test position changed."""
mock_network = hass.data[const.DATA_NETWORK] = MagicMock()
node = MockNode()
2019-07-31 19:25:30 +00:00
value = MockValue(
data=50, node=node, command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL
)
open_value = MockValue(data=False, node=node)
close_value = MockValue(data=False, node=node)
2019-07-31 19:25:30 +00:00
values = MockEntityValues(
primary=value, open=open_value, close=close_value, node=node
)
device = cover.get_device(
2019-07-31 19:25:30 +00:00
hass=hass, node=node, values=values, node_config={CONF_INVERT_PERCENT: True}
)
device.set_cover_position(position=25)
assert node.set_dimmer.called
value_id, brightness = node.set_dimmer.mock_calls[0][1]
assert value_id == value.value_id
assert brightness == 75
device.open_cover()
assert mock_network.manager.pressButton.called
2019-10-29 06:32:34 +00:00
(value_id,) = mock_network.manager.pressButton.mock_calls.pop(0)[1]
assert value_id == open_value.value_id
def test_roller_reverse_open_close(hass, mock_openzwave):
2017-03-16 05:06:37 +00:00
"""Test position changed."""
2019-02-08 01:27:31 +00:00
mock_network = hass.data[const.DATA_NETWORK] = MagicMock()
node = MockNode()
2019-07-31 19:25:30 +00:00
value = MockValue(
data=50, node=node, command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL
)
2017-03-16 05:06:37 +00:00
open_value = MockValue(data=False, node=node)
close_value = MockValue(data=False, node=node)
2019-07-31 19:25:30 +00:00
values = MockEntityValues(
primary=value, open=open_value, close=close_value, node=node
)
2019-02-08 01:27:31 +00:00
device = cover.get_device(
hass=hass,
node=node,
values=values,
2019-07-31 19:25:30 +00:00
node_config={CONF_INVERT_OPENCLOSE_BUTTONS: True},
)
2017-03-16 05:06:37 +00:00
device.open_cover()
assert mock_network.manager.pressButton.called
2019-10-29 06:32:34 +00:00
(value_id,) = mock_network.manager.pressButton.mock_calls.pop(0)[1]
2017-03-16 05:06:37 +00:00
assert value_id == close_value.value_id
device.close_cover()
assert mock_network.manager.pressButton.called
2019-10-29 06:32:34 +00:00
(value_id,) = mock_network.manager.pressButton.mock_calls.pop(0)[1]
2017-03-16 05:06:37 +00:00
assert value_id == open_value.value_id
device.stop_cover()
assert mock_network.manager.releaseButton.called
2019-10-29 06:32:34 +00:00
(value_id,) = mock_network.manager.releaseButton.mock_calls.pop(0)[1]
2017-03-16 05:06:37 +00:00
assert value_id == close_value.value_id
def test_switch_garage_value_changed(hass, mock_openzwave):
"""Test position changed."""
node = MockNode()
2019-07-31 19:25:30 +00:00
value = MockValue(
data=False, node=node, command_class=const.COMMAND_CLASS_SWITCH_BINARY
)
values = MockEntityValues(primary=value, node=node)
2019-07-31 19:25:30 +00:00
device = cover.get_device(hass=hass, node=node, values=values, node_config={})
assert device.is_closed
value.data = True
value_changed(value)
assert not device.is_closed
def test_switch_garage_commands(hass, mock_openzwave):
"""Test position changed."""
node = MockNode()
2019-07-31 19:25:30 +00:00
value = MockValue(
data=False, node=node, command_class=const.COMMAND_CLASS_SWITCH_BINARY
)
values = MockEntityValues(primary=value, node=node)
2019-07-31 19:25:30 +00:00
device = cover.get_device(hass=hass, node=node, values=values, node_config={})
assert value.data is False
device.open_cover()
assert value.data is True
device.close_cover()
assert value.data is False
def test_barrier_garage_value_changed(hass, mock_openzwave):
2017-03-16 05:06:37 +00:00
"""Test position changed."""
node = MockNode()
2019-07-31 19:25:30 +00:00
value = MockValue(
data="Closed", node=node, command_class=const.COMMAND_CLASS_BARRIER_OPERATOR
)
2017-03-16 05:06:37 +00:00
values = MockEntityValues(primary=value, node=node)
2019-07-31 19:25:30 +00:00
device = cover.get_device(hass=hass, node=node, values=values, node_config={})
2017-03-16 05:06:37 +00:00
assert device.is_closed
Fix COMMAND_CLASS_BARRIER_OPERATOR for dev branch of OpenZwave (#8574) * Update zwave.py to work with updated OpenZwave library Update zwave.py to work with updated OpenZwave library * Update zwave.py * Update zwave.py * Update to fix garage door openers Update to fix garage door support for latest version of openzwavelib * Update to cover.zwave list of states Update to cover.zwave to provide list of states based on dev version of openzwave lib * Some values not saved * Formatting fix * Formatting fix * Variable typo * Formatting fix * Formatting * Variable Update Variable Update and properties added * Formatting fixes * Formatting Fix * Update test case for door states * Formatting / Testing process fix * Formatting * Formatting / Test Fixes * Variable rename * Added members to CoverDevice * Removed un-needed else * Formatting * Formatting * Variable name changes and const updates * Changed variable names to cover_state * Added constains into const.py * Updated to change the main state on the cover device * Fixes * Formatting fixes * Formatting/Variables * Formatting * Variable fixes * Import update * Formatting / Variables * Update test for new states * Revert state changes * Test fix * Variable Fix * Formatting * Variable typo * Missing constant * Variable fix * Requested changes * Added is_opening * Added is_closing * Updated test based on changes * Formatting * Changed cover_state back to _state * Formatting and variable fixes * Test fixes * Formatting and variable touchup * Formatting * Optimizations * Add new cover features to demo * Add tests for demo cover closing/opening * Remove unused STATE_STOPPED * Add tests for new zwave cover values
2017-07-27 22:57:30 +00:00
assert not device.is_opening
assert not device.is_closing
2017-03-16 05:06:37 +00:00
Fix COMMAND_CLASS_BARRIER_OPERATOR for dev branch of OpenZwave (#8574) * Update zwave.py to work with updated OpenZwave library Update zwave.py to work with updated OpenZwave library * Update zwave.py * Update zwave.py * Update to fix garage door openers Update to fix garage door support for latest version of openzwavelib * Update to cover.zwave list of states Update to cover.zwave to provide list of states based on dev version of openzwave lib * Some values not saved * Formatting fix * Formatting fix * Variable typo * Formatting fix * Formatting * Variable Update Variable Update and properties added * Formatting fixes * Formatting Fix * Update test case for door states * Formatting / Testing process fix * Formatting * Formatting / Test Fixes * Variable rename * Added members to CoverDevice * Removed un-needed else * Formatting * Formatting * Variable name changes and const updates * Changed variable names to cover_state * Added constains into const.py * Updated to change the main state on the cover device * Fixes * Formatting fixes * Formatting/Variables * Formatting * Variable fixes * Import update * Formatting / Variables * Update test for new states * Revert state changes * Test fix * Variable Fix * Formatting * Variable typo * Missing constant * Variable fix * Requested changes * Added is_opening * Added is_closing * Updated test based on changes * Formatting * Changed cover_state back to _state * Formatting and variable fixes * Test fixes * Formatting and variable touchup * Formatting * Optimizations * Add new cover features to demo * Add tests for demo cover closing/opening * Remove unused STATE_STOPPED * Add tests for new zwave cover values
2017-07-27 22:57:30 +00:00
value.data = "Opening"
2017-03-16 05:06:37 +00:00
value_changed(value)
Fix COMMAND_CLASS_BARRIER_OPERATOR for dev branch of OpenZwave (#8574) * Update zwave.py to work with updated OpenZwave library Update zwave.py to work with updated OpenZwave library * Update zwave.py * Update zwave.py * Update to fix garage door openers Update to fix garage door support for latest version of openzwavelib * Update to cover.zwave list of states Update to cover.zwave to provide list of states based on dev version of openzwave lib * Some values not saved * Formatting fix * Formatting fix * Variable typo * Formatting fix * Formatting * Variable Update Variable Update and properties added * Formatting fixes * Formatting Fix * Update test case for door states * Formatting / Testing process fix * Formatting * Formatting / Test Fixes * Variable rename * Added members to CoverDevice * Removed un-needed else * Formatting * Formatting * Variable name changes and const updates * Changed variable names to cover_state * Added constains into const.py * Updated to change the main state on the cover device * Fixes * Formatting fixes * Formatting/Variables * Formatting * Variable fixes * Import update * Formatting / Variables * Update test for new states * Revert state changes * Test fix * Variable Fix * Formatting * Variable typo * Missing constant * Variable fix * Requested changes * Added is_opening * Added is_closing * Updated test based on changes * Formatting * Changed cover_state back to _state * Formatting and variable fixes * Test fixes * Formatting and variable touchup * Formatting * Optimizations * Add new cover features to demo * Add tests for demo cover closing/opening * Remove unused STATE_STOPPED * Add tests for new zwave cover values
2017-07-27 22:57:30 +00:00
assert not device.is_closed
assert device.is_opening
assert not device.is_closing
2017-03-16 05:06:37 +00:00
Fix COMMAND_CLASS_BARRIER_OPERATOR for dev branch of OpenZwave (#8574) * Update zwave.py to work with updated OpenZwave library Update zwave.py to work with updated OpenZwave library * Update zwave.py * Update zwave.py * Update to fix garage door openers Update to fix garage door support for latest version of openzwavelib * Update to cover.zwave list of states Update to cover.zwave to provide list of states based on dev version of openzwave lib * Some values not saved * Formatting fix * Formatting fix * Variable typo * Formatting fix * Formatting * Variable Update Variable Update and properties added * Formatting fixes * Formatting Fix * Update test case for door states * Formatting / Testing process fix * Formatting * Formatting / Test Fixes * Variable rename * Added members to CoverDevice * Removed un-needed else * Formatting * Formatting * Variable name changes and const updates * Changed variable names to cover_state * Added constains into const.py * Updated to change the main state on the cover device * Fixes * Formatting fixes * Formatting/Variables * Formatting * Variable fixes * Import update * Formatting / Variables * Update test for new states * Revert state changes * Test fix * Variable Fix * Formatting * Variable typo * Missing constant * Variable fix * Requested changes * Added is_opening * Added is_closing * Updated test based on changes * Formatting * Changed cover_state back to _state * Formatting and variable fixes * Test fixes * Formatting and variable touchup * Formatting * Optimizations * Add new cover features to demo * Add tests for demo cover closing/opening * Remove unused STATE_STOPPED * Add tests for new zwave cover values
2017-07-27 22:57:30 +00:00
value.data = "Opened"
value_changed(value)
assert not device.is_closed
assert not device.is_opening
assert not device.is_closing
value.data = "Closing"
value_changed(value)
2017-03-16 05:06:37 +00:00
assert not device.is_closed
Fix COMMAND_CLASS_BARRIER_OPERATOR for dev branch of OpenZwave (#8574) * Update zwave.py to work with updated OpenZwave library Update zwave.py to work with updated OpenZwave library * Update zwave.py * Update zwave.py * Update to fix garage door openers Update to fix garage door support for latest version of openzwavelib * Update to cover.zwave list of states Update to cover.zwave to provide list of states based on dev version of openzwave lib * Some values not saved * Formatting fix * Formatting fix * Variable typo * Formatting fix * Formatting * Variable Update Variable Update and properties added * Formatting fixes * Formatting Fix * Update test case for door states * Formatting / Testing process fix * Formatting * Formatting / Test Fixes * Variable rename * Added members to CoverDevice * Removed un-needed else * Formatting * Formatting * Variable name changes and const updates * Changed variable names to cover_state * Added constains into const.py * Updated to change the main state on the cover device * Fixes * Formatting fixes * Formatting/Variables * Formatting * Variable fixes * Import update * Formatting / Variables * Update test for new states * Revert state changes * Test fix * Variable Fix * Formatting * Variable typo * Missing constant * Variable fix * Requested changes * Added is_opening * Added is_closing * Updated test based on changes * Formatting * Changed cover_state back to _state * Formatting and variable fixes * Test fixes * Formatting and variable touchup * Formatting * Optimizations * Add new cover features to demo * Add tests for demo cover closing/opening * Remove unused STATE_STOPPED * Add tests for new zwave cover values
2017-07-27 22:57:30 +00:00
assert not device.is_opening
assert device.is_closing
2017-03-16 05:06:37 +00:00
def test_barrier_garage_commands(hass, mock_openzwave):
2017-03-16 05:06:37 +00:00
"""Test position changed."""
node = MockNode()
2019-07-31 19:25:30 +00:00
value = MockValue(
data="Closed", node=node, command_class=const.COMMAND_CLASS_BARRIER_OPERATOR
)
2017-03-16 05:06:37 +00:00
values = MockEntityValues(primary=value, node=node)
2019-07-31 19:25:30 +00:00
device = cover.get_device(hass=hass, node=node, values=values, node_config={})
2017-03-16 05:06:37 +00:00
Fix COMMAND_CLASS_BARRIER_OPERATOR for dev branch of OpenZwave (#8574) * Update zwave.py to work with updated OpenZwave library Update zwave.py to work with updated OpenZwave library * Update zwave.py * Update zwave.py * Update to fix garage door openers Update to fix garage door support for latest version of openzwavelib * Update to cover.zwave list of states Update to cover.zwave to provide list of states based on dev version of openzwave lib * Some values not saved * Formatting fix * Formatting fix * Variable typo * Formatting fix * Formatting * Variable Update Variable Update and properties added * Formatting fixes * Formatting Fix * Update test case for door states * Formatting / Testing process fix * Formatting * Formatting / Test Fixes * Variable rename * Added members to CoverDevice * Removed un-needed else * Formatting * Formatting * Variable name changes and const updates * Changed variable names to cover_state * Added constains into const.py * Updated to change the main state on the cover device * Fixes * Formatting fixes * Formatting/Variables * Formatting * Variable fixes * Import update * Formatting / Variables * Update test for new states * Revert state changes * Test fix * Variable Fix * Formatting * Variable typo * Missing constant * Variable fix * Requested changes * Added is_opening * Added is_closing * Updated test based on changes * Formatting * Changed cover_state back to _state * Formatting and variable fixes * Test fixes * Formatting and variable touchup * Formatting * Optimizations * Add new cover features to demo * Add tests for demo cover closing/opening * Remove unused STATE_STOPPED * Add tests for new zwave cover values
2017-07-27 22:57:30 +00:00
assert value.data == "Closed"
2017-03-16 05:06:37 +00:00
device.open_cover()
Fix COMMAND_CLASS_BARRIER_OPERATOR for dev branch of OpenZwave (#8574) * Update zwave.py to work with updated OpenZwave library Update zwave.py to work with updated OpenZwave library * Update zwave.py * Update zwave.py * Update to fix garage door openers Update to fix garage door support for latest version of openzwavelib * Update to cover.zwave list of states Update to cover.zwave to provide list of states based on dev version of openzwave lib * Some values not saved * Formatting fix * Formatting fix * Variable typo * Formatting fix * Formatting * Variable Update Variable Update and properties added * Formatting fixes * Formatting Fix * Update test case for door states * Formatting / Testing process fix * Formatting * Formatting / Test Fixes * Variable rename * Added members to CoverDevice * Removed un-needed else * Formatting * Formatting * Variable name changes and const updates * Changed variable names to cover_state * Added constains into const.py * Updated to change the main state on the cover device * Fixes * Formatting fixes * Formatting/Variables * Formatting * Variable fixes * Import update * Formatting / Variables * Update test for new states * Revert state changes * Test fix * Variable Fix * Formatting * Variable typo * Missing constant * Variable fix * Requested changes * Added is_opening * Added is_closing * Updated test based on changes * Formatting * Changed cover_state back to _state * Formatting and variable fixes * Test fixes * Formatting and variable touchup * Formatting * Optimizations * Add new cover features to demo * Add tests for demo cover closing/opening * Remove unused STATE_STOPPED * Add tests for new zwave cover values
2017-07-27 22:57:30 +00:00
assert value.data == "Opened"
2017-03-16 05:06:37 +00:00
device.close_cover()
Fix COMMAND_CLASS_BARRIER_OPERATOR for dev branch of OpenZwave (#8574) * Update zwave.py to work with updated OpenZwave library Update zwave.py to work with updated OpenZwave library * Update zwave.py * Update zwave.py * Update to fix garage door openers Update to fix garage door support for latest version of openzwavelib * Update to cover.zwave list of states Update to cover.zwave to provide list of states based on dev version of openzwave lib * Some values not saved * Formatting fix * Formatting fix * Variable typo * Formatting fix * Formatting * Variable Update Variable Update and properties added * Formatting fixes * Formatting Fix * Update test case for door states * Formatting / Testing process fix * Formatting * Formatting / Test Fixes * Variable rename * Added members to CoverDevice * Removed un-needed else * Formatting * Formatting * Variable name changes and const updates * Changed variable names to cover_state * Added constains into const.py * Updated to change the main state on the cover device * Fixes * Formatting fixes * Formatting/Variables * Formatting * Variable fixes * Import update * Formatting / Variables * Update test for new states * Revert state changes * Test fix * Variable Fix * Formatting * Variable typo * Missing constant * Variable fix * Requested changes * Added is_opening * Added is_closing * Updated test based on changes * Formatting * Changed cover_state back to _state * Formatting and variable fixes * Test fixes * Formatting and variable touchup * Formatting * Optimizations * Add new cover features to demo * Add tests for demo cover closing/opening * Remove unused STATE_STOPPED * Add tests for new zwave cover values
2017-07-27 22:57:30 +00:00
assert value.data == "Closed"