2017-03-09 13:35:04 +00:00
|
|
|
"""Test Z-Wave lights."""
|
|
|
|
from homeassistant.components.zwave import const
|
|
|
|
from homeassistant.components.light import zwave, ATTR_BRIGHTNESS
|
|
|
|
|
2017-03-14 23:55:33 +00:00
|
|
|
from tests.mock.zwave import (
|
|
|
|
MockNode, MockValue, MockEntityValues, value_changed)
|
|
|
|
|
|
|
|
|
|
|
|
class MockLightValues(MockEntityValues):
|
|
|
|
"""Mock Z-Wave light values."""
|
|
|
|
|
|
|
|
def __init__(self, **kwargs):
|
|
|
|
"""Initialize the mock zwave values."""
|
|
|
|
self.color = None
|
|
|
|
self.color_channels = None
|
|
|
|
super().__init__(**kwargs)
|
2017-03-09 13:35:04 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_get_device_detects_dimmer(mock_openzwave):
|
|
|
|
"""Test get_device returns a color light."""
|
|
|
|
node = MockNode()
|
|
|
|
value = MockValue(data=0, node=node)
|
2017-03-14 23:55:33 +00:00
|
|
|
values = MockLightValues(primary=value)
|
2017-03-09 13:35:04 +00:00
|
|
|
|
2017-03-14 23:55:33 +00:00
|
|
|
device = zwave.get_device(node=node, values=values, node_config={})
|
2017-03-09 13:35:04 +00:00
|
|
|
assert isinstance(device, zwave.ZwaveDimmer)
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_device_detects_colorlight(mock_openzwave):
|
|
|
|
"""Test get_device returns a color light."""
|
|
|
|
node = MockNode(command_classes=[const.COMMAND_CLASS_SWITCH_COLOR])
|
|
|
|
value = MockValue(data=0, node=node)
|
2017-03-14 23:55:33 +00:00
|
|
|
values = MockLightValues(primary=value)
|
2017-03-09 13:35:04 +00:00
|
|
|
|
2017-03-14 23:55:33 +00:00
|
|
|
device = zwave.get_device(node=node, values=values, node_config={})
|
2017-03-09 13:35:04 +00:00
|
|
|
assert isinstance(device, zwave.ZwaveColorLight)
|
|
|
|
|
|
|
|
|
|
|
|
def test_dimmer_turn_on(mock_openzwave):
|
|
|
|
"""Test turning on a dimmable Z-Wave light."""
|
|
|
|
node = MockNode()
|
|
|
|
value = MockValue(data=0, node=node)
|
2017-03-14 23:55:33 +00:00
|
|
|
values = MockLightValues(primary=value)
|
|
|
|
device = zwave.get_device(node=node, values=values, node_config={})
|
2017-03-09 13:35:04 +00:00
|
|
|
|
|
|
|
device.turn_on()
|
|
|
|
|
|
|
|
assert node.set_dimmer.called
|
|
|
|
value_id, brightness = node.set_dimmer.mock_calls[0][1]
|
|
|
|
assert value_id == value.value_id
|
|
|
|
assert brightness == 255
|
|
|
|
|
|
|
|
node.reset_mock()
|
|
|
|
|
|
|
|
device.turn_on(**{ATTR_BRIGHTNESS: 120})
|
|
|
|
|
|
|
|
assert node.set_dimmer.called
|
|
|
|
value_id, brightness = node.set_dimmer.mock_calls[0][1]
|
|
|
|
|
|
|
|
assert value_id == value.value_id
|
|
|
|
assert brightness == 46 # int(120 / 255 * 99)
|
|
|
|
|
|
|
|
|
|
|
|
def test_dimmer_value_changed(mock_openzwave):
|
|
|
|
"""Test value changed for dimmer lights."""
|
|
|
|
node = MockNode()
|
|
|
|
value = MockValue(data=0, node=node)
|
2017-03-14 23:55:33 +00:00
|
|
|
values = MockLightValues(primary=value)
|
|
|
|
device = zwave.get_device(node=node, values=values, node_config={})
|
2017-03-09 13:35:04 +00:00
|
|
|
|
|
|
|
assert not device.is_on
|
|
|
|
|
|
|
|
value.data = 46
|
|
|
|
value_changed(value)
|
|
|
|
|
|
|
|
assert device.is_on
|
|
|
|
assert device.brightness == 118
|