ZWave Sensor tests (#6721)

* ZWave Sensor tests

* Add missed coverage
This commit is contained in:
Adam Mills 2017-03-20 13:17:17 -04:00 committed by GitHub
parent be15ca3f23
commit dddbce82f5
3 changed files with 73 additions and 4 deletions

View file

@ -399,7 +399,6 @@ omit =
homeassistant/components/sensor/xbox_live.py
homeassistant/components/sensor/yweather.py
homeassistant/components/sensor/zamg.py
homeassistant/components/sensor/zwave.py
homeassistant/components/switch/acer_projector.py
homeassistant/components/switch/anel_pwrctrl.py
homeassistant/components/switch/arest.py

View file

@ -1,10 +1,22 @@
"""Test Z-Wave sensor."""
from homeassistant.components.sensor import zwave
from homeassistant.components.zwave import const
import homeassistant.const
from tests.mock.zwave import (
MockNode, MockValue, MockEntityValues, value_changed)
def test_get_device_detects_none(mock_openzwave):
"""Test get_device returns None."""
node = MockNode()
value = MockValue(data=0, node=node)
values = MockEntityValues(primary=value)
device = zwave.get_device(node=node, values=values, node_config={})
assert device is None
def test_get_device_detects_sensor(mock_openzwave):
"""Test get_device returns a Z-Wave Sensor."""
node = MockNode(command_classes=[const.COMMAND_CLASS_BATTERY])
@ -14,6 +26,7 @@ def test_get_device_detects_sensor(mock_openzwave):
device = zwave.get_device(node=node, values=values, node_config={})
assert isinstance(device, zwave.ZWaveSensor)
assert device.force_update
def test_get_device_detects_alarmsensor(mock_openzwave):
@ -38,7 +51,32 @@ def test_get_device_detects_multilevelsensor(mock_openzwave):
assert isinstance(device, zwave.ZWaveMultilevelSensor)
def test_multilevelsensor_value_changed_temp_units(mock_openzwave):
def test_get_device_detects_multilevel_meter(mock_openzwave):
"""Test get_device returns a Z-Wave multilevel sensor."""
node = MockNode(command_classes=[const.COMMAND_CLASS_METER])
value = MockValue(data=0, node=node, type=const.TYPE_DECIMAL)
values = MockEntityValues(primary=value)
device = zwave.get_device(node=node, values=values, node_config={})
assert isinstance(device, zwave.ZWaveMultilevelSensor)
def test_sensor_value_changed(mock_openzwave):
"""Test value changed for Z-Wave sensor."""
node = MockNode(command_classes=[const.COMMAND_CLASS_BATTERY])
value = MockValue(data=12.34, command_class=const.COMMAND_CLASS_BATTERY,
node=node, units='%')
values = MockEntityValues(primary=value)
device = zwave.get_device(node=node, values=values, node_config={})
assert device.state == 12.34
assert device.unit_of_measurement == '%'
value.data = 45.67
value_changed(value)
assert device.state == 45.67
def test_multilevelsensor_value_changed_temp_fahrenheit(mock_openzwave):
"""Test value changed for Z-Wave multilevel sensor for temperature."""
node = MockNode(command_classes=[const.COMMAND_CLASS_SENSOR_MULTILEVEL,
const.COMMAND_CLASS_METER])
@ -47,12 +85,27 @@ def test_multilevelsensor_value_changed_temp_units(mock_openzwave):
device = zwave.get_device(node=node, values=values, node_config={})
assert device.state == 191.0
assert value.units == 'F'
assert device.unit_of_measurement == homeassistant.const.TEMP_FAHRENHEIT
value.data = 197.95555
value_changed(value)
assert device.state == 198.0
def test_multilevelsensor_value_changed_temp_celsius(mock_openzwave):
"""Test value changed for Z-Wave multilevel sensor for temperature."""
node = MockNode(command_classes=[const.COMMAND_CLASS_SENSOR_MULTILEVEL,
const.COMMAND_CLASS_METER])
value = MockValue(data=38.85555, units='C', node=node)
values = MockEntityValues(primary=value)
device = zwave.get_device(node=node, values=values, node_config={})
assert device.state == 38.9
assert device.unit_of_measurement == homeassistant.const.TEMP_CELSIUS
value.data = 37.95555
value_changed(value)
assert device.state == 38.0
def test_multilevelsensor_value_changed_other_units(mock_openzwave):
"""Test value changed for Z-Wave multilevel sensor for other units."""
node = MockNode(command_classes=[const.COMMAND_CLASS_SENSOR_MULTILEVEL,
@ -62,7 +115,22 @@ def test_multilevelsensor_value_changed_other_units(mock_openzwave):
device = zwave.get_device(node=node, values=values, node_config={})
assert device.state == 190.96
assert value.units == 'kWh'
assert device.unit_of_measurement == 'kWh'
value.data = 197.95555
value_changed(value)
assert device.state == 197.96
def test_multilevelsensor_value_changed_integer(mock_openzwave):
"""Test value changed for Z-Wave multilevel sensor for other units."""
node = MockNode(command_classes=[const.COMMAND_CLASS_SENSOR_MULTILEVEL,
const.COMMAND_CLASS_METER])
value = MockValue(data=5, units='counts', node=node)
values = MockEntityValues(primary=value)
device = zwave.get_device(node=node, values=values, node_config={})
assert device.state == 5
assert device.unit_of_measurement == 'counts'
value.data = 6
value_changed(value)
assert device.state == 6

View file

@ -58,6 +58,7 @@ class MockValue(MagicMock):
index=0,
command_class=None,
units=None,
type=None,
value_id=None):
"""Initialize a Z-Wave mock value."""
super().__init__()
@ -69,6 +70,7 @@ class MockValue(MagicMock):
self.index = 0
self.command_class = command_class
self.units = units
self.type = type
if value_id is None:
MockValue._mock_value_id += 1
value_id = MockValue._mock_value_id