mirror of https://github.com/home-assistant/core
143 lines
4.5 KiB
Python
143 lines
4.5 KiB
Python
"""The tests for Z-Wave JS logbook."""
|
|
|
|
from zwave_js_server.const import CommandClass
|
|
|
|
from homeassistant.components.zwave_js.const import (
|
|
ZWAVE_JS_NOTIFICATION_EVENT,
|
|
ZWAVE_JS_VALUE_NOTIFICATION_EVENT,
|
|
)
|
|
from homeassistant.components.zwave_js.helpers import get_device_id
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers import device_registry as dr
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
from tests.components.logbook.common import MockRow, mock_humanify
|
|
|
|
|
|
async def test_humanifying_zwave_js_notification_event(
|
|
hass: HomeAssistant,
|
|
device_registry: dr.DeviceRegistry,
|
|
client,
|
|
lock_schlage_be469,
|
|
integration,
|
|
) -> None:
|
|
"""Test humanifying Z-Wave JS notification events."""
|
|
device = device_registry.async_get_device(
|
|
identifiers={get_device_id(client.driver, lock_schlage_be469)}
|
|
)
|
|
assert device
|
|
|
|
hass.config.components.add("recorder")
|
|
assert await async_setup_component(hass, "logbook", {})
|
|
await hass.async_block_till_done()
|
|
|
|
events = mock_humanify(
|
|
hass,
|
|
[
|
|
MockRow(
|
|
ZWAVE_JS_NOTIFICATION_EVENT,
|
|
{
|
|
"device_id": device.id,
|
|
"command_class": CommandClass.NOTIFICATION.value,
|
|
"command_class_name": "Notification",
|
|
"label": "label",
|
|
"event_label": "event_label",
|
|
},
|
|
),
|
|
MockRow(
|
|
ZWAVE_JS_NOTIFICATION_EVENT,
|
|
{
|
|
"device_id": device.id,
|
|
"command_class": CommandClass.ENTRY_CONTROL.value,
|
|
"command_class_name": "Entry Control",
|
|
"event_type": 1,
|
|
"data_type": 2,
|
|
},
|
|
),
|
|
MockRow(
|
|
ZWAVE_JS_NOTIFICATION_EVENT,
|
|
{
|
|
"device_id": device.id,
|
|
"command_class": CommandClass.SWITCH_MULTILEVEL.value,
|
|
"command_class_name": "Multilevel Switch",
|
|
"event_type": 1,
|
|
"direction": "up",
|
|
},
|
|
),
|
|
MockRow(
|
|
ZWAVE_JS_NOTIFICATION_EVENT,
|
|
{
|
|
"device_id": device.id,
|
|
"command_class": CommandClass.POWERLEVEL.value,
|
|
"command_class_name": "Powerlevel",
|
|
},
|
|
),
|
|
],
|
|
)
|
|
|
|
assert events[0]["name"] == "Touchscreen Deadbolt"
|
|
assert events[0]["domain"] == "zwave_js"
|
|
assert (
|
|
events[0]["message"]
|
|
== "fired Notification CC 'notification' event 'label': 'event_label'"
|
|
)
|
|
|
|
assert events[1]["name"] == "Touchscreen Deadbolt"
|
|
assert events[1]["domain"] == "zwave_js"
|
|
assert events[1]["message"] == (
|
|
"fired Entry Control CC 'notification' event for event type '1' "
|
|
"with data type '2'"
|
|
)
|
|
|
|
assert events[2]["name"] == "Touchscreen Deadbolt"
|
|
assert events[2]["domain"] == "zwave_js"
|
|
assert (
|
|
events[2]["message"]
|
|
== "fired Multilevel Switch CC 'notification' event for event type '1': 'up'"
|
|
)
|
|
|
|
assert events[3]["name"] == "Touchscreen Deadbolt"
|
|
assert events[3]["domain"] == "zwave_js"
|
|
assert events[3]["message"] == "fired Powerlevel CC 'notification' event"
|
|
|
|
|
|
async def test_humanifying_zwave_js_value_notification_event(
|
|
hass: HomeAssistant,
|
|
device_registry: dr.DeviceRegistry,
|
|
client,
|
|
lock_schlage_be469,
|
|
integration,
|
|
) -> None:
|
|
"""Test humanifying Z-Wave JS value notification events."""
|
|
device = device_registry.async_get_device(
|
|
identifiers={get_device_id(client.driver, lock_schlage_be469)}
|
|
)
|
|
assert device
|
|
|
|
hass.config.components.add("recorder")
|
|
assert await async_setup_component(hass, "logbook", {})
|
|
await hass.async_block_till_done()
|
|
|
|
events = mock_humanify(
|
|
hass,
|
|
[
|
|
MockRow(
|
|
ZWAVE_JS_VALUE_NOTIFICATION_EVENT,
|
|
{
|
|
"device_id": device.id,
|
|
"command_class": CommandClass.SCENE_ACTIVATION.value,
|
|
"command_class_name": "Scene Activation",
|
|
"label": "Scene ID",
|
|
"value": "001",
|
|
},
|
|
),
|
|
],
|
|
)
|
|
|
|
assert events[0]["name"] == "Touchscreen Deadbolt"
|
|
assert events[0]["domain"] == "zwave_js"
|
|
assert (
|
|
events[0]["message"]
|
|
== "fired Scene Activation CC 'value notification' event for 'Scene ID': '001'"
|
|
)
|