Add typing of deCONZ device_trigger (#67496)
This commit is contained in:
parent
38306417ad
commit
362191a0e6
2 changed files with 134 additions and 28 deletions
|
@ -5,6 +5,13 @@ from unittest.mock import Mock, patch
|
|||
import pytest
|
||||
|
||||
from homeassistant.components.automation import DOMAIN as AUTOMATION_DOMAIN
|
||||
from homeassistant.components.binary_sensor import DOMAIN as BINARY_SENSOR_DOMAIN
|
||||
from homeassistant.components.binary_sensor.device_trigger import (
|
||||
CONF_BAT_LOW,
|
||||
CONF_NOT_BAT_LOW,
|
||||
CONF_NOT_TAMPERED,
|
||||
CONF_TAMPERED,
|
||||
)
|
||||
from homeassistant.components.deconz import device_trigger
|
||||
from homeassistant.components.deconz.const import DOMAIN as DECONZ_DOMAIN
|
||||
from homeassistant.components.deconz.device_trigger import CONF_SUBTYPE
|
||||
|
@ -129,6 +136,91 @@ async def test_get_triggers(hass, aioclient_mock):
|
|||
assert_lists_same(triggers, expected_triggers)
|
||||
|
||||
|
||||
async def test_get_triggers_for_alarm_event(hass, aioclient_mock):
|
||||
"""Test triggers work."""
|
||||
data = {
|
||||
"sensors": {
|
||||
"1": {
|
||||
"config": {
|
||||
"battery": 95,
|
||||
"enrolled": 1,
|
||||
"on": True,
|
||||
"pending": [],
|
||||
"reachable": True,
|
||||
},
|
||||
"ep": 1,
|
||||
"etag": "5aaa1c6bae8501f59929539c6e8f44d6",
|
||||
"lastseen": "2021-07-25T18:07Z",
|
||||
"manufacturername": "lk",
|
||||
"modelid": "ZB-KeypadGeneric-D0002",
|
||||
"name": "Keypad",
|
||||
"state": {
|
||||
"action": "armed_stay",
|
||||
"lastupdated": "2021-07-25T18:02:51.172",
|
||||
"lowbattery": False,
|
||||
"panel": "exit_delay",
|
||||
"seconds_remaining": 55,
|
||||
"tampered": False,
|
||||
},
|
||||
"swversion": "3.13",
|
||||
"type": "ZHAAncillaryControl",
|
||||
"uniqueid": "00:00:00:00:00:00:00:00-00",
|
||||
}
|
||||
}
|
||||
}
|
||||
with patch.dict(DECONZ_WEB_REQUEST, data):
|
||||
await setup_deconz_integration(hass, aioclient_mock)
|
||||
|
||||
device_registry = await hass.helpers.device_registry.async_get_registry()
|
||||
device = device_registry.async_get_device(
|
||||
identifiers={(DECONZ_DOMAIN, "00:00:00:00:00:00:00:00")}
|
||||
)
|
||||
|
||||
triggers = await async_get_device_automations(
|
||||
hass, DeviceAutomationType.TRIGGER, device.id
|
||||
)
|
||||
|
||||
expected_triggers = [
|
||||
{
|
||||
CONF_DEVICE_ID: device.id,
|
||||
CONF_DOMAIN: BINARY_SENSOR_DOMAIN,
|
||||
ATTR_ENTITY_ID: "binary_sensor.keypad_low_battery",
|
||||
CONF_PLATFORM: "device",
|
||||
CONF_TYPE: CONF_BAT_LOW,
|
||||
},
|
||||
{
|
||||
CONF_DEVICE_ID: device.id,
|
||||
CONF_DOMAIN: BINARY_SENSOR_DOMAIN,
|
||||
ATTR_ENTITY_ID: "binary_sensor.keypad_low_battery",
|
||||
CONF_PLATFORM: "device",
|
||||
CONF_TYPE: CONF_NOT_BAT_LOW,
|
||||
},
|
||||
{
|
||||
CONF_DEVICE_ID: device.id,
|
||||
CONF_DOMAIN: BINARY_SENSOR_DOMAIN,
|
||||
ATTR_ENTITY_ID: "binary_sensor.keypad_tampered",
|
||||
CONF_PLATFORM: "device",
|
||||
CONF_TYPE: CONF_TAMPERED,
|
||||
},
|
||||
{
|
||||
CONF_DEVICE_ID: device.id,
|
||||
CONF_DOMAIN: BINARY_SENSOR_DOMAIN,
|
||||
ATTR_ENTITY_ID: "binary_sensor.keypad_tampered",
|
||||
CONF_PLATFORM: "device",
|
||||
CONF_TYPE: CONF_NOT_TAMPERED,
|
||||
},
|
||||
{
|
||||
CONF_DEVICE_ID: device.id,
|
||||
CONF_DOMAIN: SENSOR_DOMAIN,
|
||||
ATTR_ENTITY_ID: "sensor.keypad_battery",
|
||||
CONF_PLATFORM: "device",
|
||||
CONF_TYPE: ATTR_BATTERY_LEVEL,
|
||||
},
|
||||
]
|
||||
|
||||
assert_lists_same(triggers, expected_triggers)
|
||||
|
||||
|
||||
async def test_get_triggers_manage_unsupported_remotes(hass, aioclient_mock):
|
||||
"""Verify no triggers for an unsupported remote."""
|
||||
data = {
|
||||
|
@ -244,9 +336,7 @@ async def test_functional_device_trigger(
|
|||
assert automation_calls[0].data["some"] == "test_trigger_button_press"
|
||||
|
||||
|
||||
async def test_validate_trigger_unknown_device(
|
||||
hass, aioclient_mock, mock_deconz_websocket
|
||||
):
|
||||
async def test_validate_trigger_unknown_device(hass, aioclient_mock):
|
||||
"""Test unknown device does not return a trigger config."""
|
||||
await setup_deconz_integration(hass, aioclient_mock)
|
||||
|
||||
|
@ -276,9 +366,7 @@ async def test_validate_trigger_unknown_device(
|
|||
assert len(hass.states.async_entity_ids(AUTOMATION_DOMAIN)) == 0
|
||||
|
||||
|
||||
async def test_validate_trigger_unsupported_device(
|
||||
hass, aioclient_mock, mock_deconz_websocket
|
||||
):
|
||||
async def test_validate_trigger_unsupported_device(hass, aioclient_mock):
|
||||
"""Test unsupported device doesn't return a trigger config."""
|
||||
config_entry = await setup_deconz_integration(hass, aioclient_mock)
|
||||
|
||||
|
@ -315,9 +403,7 @@ async def test_validate_trigger_unsupported_device(
|
|||
assert len(hass.states.async_entity_ids(AUTOMATION_DOMAIN)) == 0
|
||||
|
||||
|
||||
async def test_validate_trigger_unsupported_trigger(
|
||||
hass, aioclient_mock, mock_deconz_websocket
|
||||
):
|
||||
async def test_validate_trigger_unsupported_trigger(hass, aioclient_mock):
|
||||
"""Test unsupported trigger does not return a trigger config."""
|
||||
config_entry = await setup_deconz_integration(hass, aioclient_mock)
|
||||
|
||||
|
@ -356,9 +442,7 @@ async def test_validate_trigger_unsupported_trigger(
|
|||
assert len(hass.states.async_entity_ids(AUTOMATION_DOMAIN)) == 0
|
||||
|
||||
|
||||
async def test_attach_trigger_no_matching_event(
|
||||
hass, aioclient_mock, mock_deconz_websocket
|
||||
):
|
||||
async def test_attach_trigger_no_matching_event(hass, aioclient_mock):
|
||||
"""Test no matching event for device doesn't return a trigger config."""
|
||||
config_entry = await setup_deconz_integration(hass, aioclient_mock)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue