def test_get_device_detects_rollershutter(mock_openzwave): """Test device returns rollershutter.""" node = MockNode() value = MockValue(data=0, node=node, command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL) values = MockEntityValues(primary=value, open=None, close=None, node=node) device = zwave.get_device(node=node, values=values, node_config={}) assert isinstance(device, zwave.ZwaveRollershutter)
def test_get_device_detects_sensor(mock_openzwave): """Test that device returns a binary sensor.""" node = MockNode() value = MockValue(data=False, node=node, command_class=const.COMMAND_CLASS_SENSOR_BINARY) values = MockEntityValues(primary=value) device = binary_sensor.get_device(node=node, values=values, node_config={}) assert isinstance(device, binary_sensor.ZWaveBinarySensor)
def test_get_device_detects_workaround_sensor(mock_openzwave): """Test that workaround returns a binary sensor.""" node = MockNode(manufacturer_id="010f", product_type="0b00") value = MockValue(data=False, node=node, command_class=const.COMMAND_CLASS_SENSOR_ALARM) values = MockEntityValues(primary=value) device = binary_sensor.get_device(node=node, values=values, node_config={}) assert isinstance(device, binary_sensor.ZWaveBinarySensor)
def test_get_device_detects_multilevelsensor(mock_openzwave): """Test get_device returns a Z-Wave multilevel sensor.""" node = MockNode(command_classes=[ const.COMMAND_CLASS_SENSOR_MULTILEVEL, const.COMMAND_CLASS_METER ]) value = MockValue(data=0, node=node) values = MockEntityValues(primary=value) device = zwave.get_device(node=node, values=values, node_config={}) assert isinstance(device, zwave.ZWaveMultilevelSensor)
def test_get_device_detects_alarmsensor(mock_openzwave): """Test get_device returns a Z-Wave alarmsensor.""" node = MockNode(command_classes=[ const.COMMAND_CLASS_ALARM, const.COMMAND_CLASS_SENSOR_ALARM ]) value = MockValue(data=0, node=node) values = MockEntityValues(primary=value) device = sensor.get_device(node=node, values=values, node_config={}) assert isinstance(device, sensor.ZWaveAlarmSensor)
def test_get_device_detects_fan(mock_openzwave): """Test get_device returns a zwave fan.""" node = MockNode() value = MockValue(data=0, node=node) values = MockEntityValues(primary=value) device = fan.get_device(node=node, values=values, node_config={}) assert isinstance(device, fan.ZwaveFan) assert device.supported_features == SUPPORT_SET_SPEED assert device.speed_list == [SPEED_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH]
def test_track_message_workaround(mock_openzwave): """Test value changed for Z-Wave lock by alarm-clearing workaround.""" node = MockNode(manufacturer_id='003B', product_id='5044', stats={'lastReceivedMessage': [0] * 6}) values = MockEntityValues( primary=MockValue(data=True, node=node), access_control=None, alarm_type=None, alarm_level=None, ) # Here we simulate an RF lock. The first zwave.get_device will call # update properties, simulating the first DoorLock report. We then trigger # a change, simulating the openzwave automatic refreshing behavior (which # is enabled for at least the lock that needs this workaround) node.stats['lastReceivedMessage'][5] = const.COMMAND_CLASS_DOOR_LOCK device = zwave.get_device(node=node, values=values) value_changed(values.primary) assert device.is_locked assert device.device_state_attributes[zwave.ATTR_NOTIFICATION] == 'RF Lock' # Simulate a keypad unlock. We trigger a value_changed() which simulates # the Alarm notification received from the lock. Then, we trigger # value_changed() to simulate the automatic refreshing behavior. values.access_control = MockValue(data=6, node=node) values.alarm_type = MockValue(data=19, node=node) values.alarm_level = MockValue(data=3, node=node) node.stats['lastReceivedMessage'][5] = const.COMMAND_CLASS_ALARM value_changed(values.access_control) node.stats['lastReceivedMessage'][5] = const.COMMAND_CLASS_DOOR_LOCK values.primary.data = False value_changed(values.primary) assert not device.is_locked assert device.device_state_attributes[zwave.ATTR_LOCK_STATUS] == \ 'Unlocked with Keypad by user 3' # Again, simulate an RF lock. device.lock() node.stats['lastReceivedMessage'][5] = const.COMMAND_CLASS_DOOR_LOCK value_changed(values.primary) assert device.is_locked assert device.device_state_attributes[zwave.ATTR_NOTIFICATION] == 'RF Lock'
def test_roller_no_position_workaround(mock_openzwave): """Test position changed.""" node = MockNode(manufacturer_id='0047', product_type='5a52') value = MockValue(data=45, node=node, command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL) values = MockEntityValues(primary=value, open=None, close=None, node=node) device = zwave.get_device(node=node, values=values, node_config={}) assert device.current_cover_position is None
def test_get_device_detects_none(hass, mock_openzwave): """Test device returns none.""" node = MockNode() value = MockValue(data=0, node=node) values = MockEntityValues(primary=value, node=node) device = zwave.get_device(hass=hass, node=node, values=values, node_config={}) assert device is None
def test_get_device_detects_trigger_sensor(mock_openzwave): """Test device is a trigger sensor.""" node = MockNode(manufacturer_id="013c", product_type="0002", product_id="0002") value = MockValue(data=False, node=node) values = MockEntityValues(primary=value) device = binary_sensor.get_device(node=node, values=values, node_config={}) assert isinstance(device, binary_sensor.ZWaveTriggerSensor) assert device.device_class == "motion"
def test_get_device_detects_rollershutter(hass, mock_openzwave): """Test device returns rollershutter.""" hass.data[const.DATA_NETWORK] = MagicMock() node = MockNode() value = MockValue( data=0, node=node, command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL ) values = MockEntityValues(primary=value, open=None, close=None, node=node) device = cover.get_device(hass=hass, node=node, values=values, node_config={}) assert isinstance(device, cover.ZwaveRollershutter)
def test_roller_no_position_workaround(hass, mock_openzwave): """Test position changed.""" hass.data[const.DATA_NETWORK] = MagicMock() node = MockNode(manufacturer_id="0047", product_type="5a52") value = MockValue( data=45, node=node, command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL ) values = MockEntityValues(primary=value, open=None, close=None, node=node) device = cover.get_device(hass=hass, node=node, values=values, node_config={}) assert device.current_cover_position is None
def test_get_device_detects_garagedoor(mock_openzwave): """Test device returns garage door.""" node = MockNode() value = MockValue(data=0, node=node, command_class=const.COMMAND_CLASS_BARRIER_OPERATOR) values = MockEntityValues(primary=value, node=node) device = zwave.get_device(node=node, values=values, node_config={}) assert isinstance(device, zwave.ZwaveGarageDoor) assert device.device_class == "garage" assert device.supported_features == SUPPORT_OPEN | SUPPORT_CLOSE
def test_fan_turn_on(mock_openzwave): """Test turning on a zwave fan.""" node = MockNode() value = MockValue(data=0, node=node) values = MockEntityValues(primary=value) device = fan.get_device(node=node, values=values, node_config={}) 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(percentage=0) assert node.set_dimmer.called value_id, brightness = node.set_dimmer.mock_calls[0][1] assert value_id == value.value_id assert brightness == 0 node.reset_mock() device.turn_on(percentage=1) assert node.set_dimmer.called value_id, brightness = node.set_dimmer.mock_calls[0][1] assert value_id == value.value_id assert brightness == 1 node.reset_mock() device.turn_on(percentage=50) assert node.set_dimmer.called value_id, brightness = node.set_dimmer.mock_calls[0][1] assert value_id == value.value_id assert brightness == 50 node.reset_mock() device.turn_on(percentage=100) assert node.set_dimmer.called value_id, brightness = node.set_dimmer.mock_calls[0][1] assert value_id == value.value_id assert brightness == 99
def test_lock_access_control(mock_openzwave): """Test access control for Z-Wave lock.""" node = MockNode() values = MockEntityValues( primary=MockValue(data=None, node=node), access_control=MockValue(data=11, node=node), alarm_type=None, alarm_level=None, ) device = lock.get_device(node=node, values=values, node_config={}) assert device.extra_state_attributes[lock.ATTR_NOTIFICATION] == "Lock Jammed"
def test_get_device_detects_lock(mock_openzwave): """Test get_device returns a Z-Wave lock.""" node = MockNode() values = MockEntityValues( primary=MockValue(data=None, node=node), access_control=None, alarm_type=None, alarm_level=None, ) device = lock.get_device(node=node, values=values, node_config={}) assert isinstance(device, lock.ZwaveLock)
def test_get_device_detects_garagedoor_switch(hass, mock_openzwave): """Test device returns garage door.""" node = MockNode() value = MockValue( data=False, node=node, command_class=const.COMMAND_CLASS_SWITCH_BINARY ) values = MockEntityValues(primary=value, node=node) device = cover.get_device(hass=hass, node=node, values=values, node_config={}) assert isinstance(device, cover.ZwaveGarageDoorSwitch) assert device.device_class == "garage" assert device.supported_features == SUPPORT_OPEN | SUPPORT_CLOSE
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 = sensor.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
def test_garage_commands(mock_openzwave): """Test position changed.""" node = MockNode() value = MockValue(data=False, node=node, command_class=const.COMMAND_CLASS_BARRIER_OPERATOR) values = MockEntityValues(primary=value, node=node) device = zwave.get_device(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_alarm_sensor_value_changed(mock_openzwave): """Test value changed for Z-Wave sensor.""" node = MockNode(command_classes=[const.COMMAND_CLASS_ALARM, const.COMMAND_CLASS_SENSOR_ALARM]) value = MockValue(data=12.34, node=node, units='%') values = MockEntityValues(primary=value) device = sensor.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_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 = sensor.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_fan_turn_off(mock_openzwave): """Test turning off a dimmable zwave fan.""" node = MockNode() value = MockValue(data=46, node=node) values = MockEntityValues(primary=value) device = fan.get_device(node=node, values=values, node_config={}) device.turn_off() assert node.set_dimmer.called value_id, brightness = node.set_dimmer.mock_calls[0][1] assert value_id == value.value_id assert brightness == 0
def test_switch_value_changed(mock_openzwave): """Test value changed for Z-Wave switch.""" node = MockNode() value = MockValue(data=False, node=node) values = MockEntityValues(primary=value) device = zwave.get_device(node=node, values=values, node_config={}) assert not device.is_on value.data = True value_changed(value) assert device.is_on
def test_barrier_garage_commands(hass, mock_openzwave): """Test position changed.""" node = MockNode() value = MockValue( data="Closed", node=node, command_class=const.COMMAND_CLASS_BARRIER_OPERATOR ) values = MockEntityValues(primary=value, node=node) device = cover.get_device(hass=hass, node=node, values=values, node_config={}) assert value.data == "Closed" device.open_cover() assert value.data == "Opened" device.close_cover() assert value.data == "Closed"
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 ]) value = MockValue(data=190.95555, units='F', node=node) values = MockEntityValues(primary=value) device = zwave.get_device(node=node, values=values, node_config={}) assert device.state == 191.0 assert device.unit_of_measurement == homeassistant.const.TEMP_FAHRENHEIT value.data = 197.95555 value_changed(value) assert device.state == 198.0
def device(hass, mock_openzwave): """Fixture to provide a precreated climate device.""" node = MockNode() values = MockEntityValues( primary=MockValue(data=1, node=node), temperature=MockValue(data=5, node=node, units=None), mode=MockValue(data='test1', data_items=[0, 1, 2], node=node), fan_mode=MockValue(data='test2', data_items=[3, 4, 5], node=node), operating_state=MockValue(data=6, node=node), fan_state=MockValue(data=7, node=node), ) device = climate.get_device(hass, node=node, values=values, node_config={}) yield device
def test_switch_garage_commands(hass, mock_openzwave): """Test position changed.""" node = MockNode() value = MockValue( data=False, node=node, command_class=const.COMMAND_CLASS_SWITCH_BINARY ) values = MockEntityValues(primary=value, node=node) 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_lock_state_workaround(mock_openzwave): """Test value changed for Z-Wave lock using notification state.""" node = MockNode(manufacturer_id="0090", product_id="0440") values = MockEntityValues( primary=MockValue(data=True, node=node), access_control=MockValue(data=1, node=node), alarm_type=None, alarm_level=None, ) device = lock.get_device(node=node, values=values) assert device.is_locked values.access_control.data = 2 value_changed(values.access_control) assert not device.is_locked
def test_switch_garage_value_changed(hass, mock_openzwave): """Test position changed.""" node = MockNode() value = MockValue(data=False, node=node, command_class=const.COMMAND_CLASS_SWITCH_BINARY) values = MockEntityValues(primary=value, node=node) device = zwave.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_get_device_detects_battery_sensor(mock_openzwave): """Test get_device returns a Z-Wave battery sensor.""" node = MockNode(command_classes=[const.COMMAND_CLASS_BATTERY]) value = MockValue( data=0, node=node, type=const.TYPE_DECIMAL, command_class=const.COMMAND_CLASS_BATTERY, ) values = MockEntityValues(primary=value) device = sensor.get_device(node=node, values=values, node_config={}) assert isinstance(device, sensor.ZWaveBatterySensor) assert device.device_class == homeassistant.const.DEVICE_CLASS_BATTERY