mirror of
https://github.com/home-assistant/core.git
synced 2025-11-13 21:10:25 +00:00
Add linked doorbell event support to HomeKit (#120834)
This commit is contained in:
@@ -14,6 +14,7 @@ import pytest
|
||||
from homeassistant import config as hass_config
|
||||
from homeassistant.components import homekit as homekit_base, zeroconf
|
||||
from homeassistant.components.binary_sensor import BinarySensorDeviceClass
|
||||
from homeassistant.components.event import EventDeviceClass
|
||||
from homeassistant.components.homekit import (
|
||||
MAX_DEVICES,
|
||||
STATUS_READY,
|
||||
@@ -2005,6 +2006,82 @@ async def test_homekit_finds_linked_motion_sensors(
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("domain", "device_class"),
|
||||
[
|
||||
("binary_sensor", BinarySensorDeviceClass.OCCUPANCY),
|
||||
("event", EventDeviceClass.DOORBELL),
|
||||
],
|
||||
)
|
||||
@pytest.mark.usefixtures("mock_async_zeroconf")
|
||||
async def test_homekit_finds_linked_doorbell_sensors(
|
||||
hass: HomeAssistant,
|
||||
hk_driver,
|
||||
device_registry: dr.DeviceRegistry,
|
||||
entity_registry: er.EntityRegistry,
|
||||
domain: str,
|
||||
device_class: EventDeviceClass | BinarySensorDeviceClass,
|
||||
) -> None:
|
||||
"""Test homekit can find linked doorbell sensors."""
|
||||
entry = await async_init_integration(hass)
|
||||
|
||||
homekit = _mock_homekit(hass, entry, HOMEKIT_MODE_BRIDGE)
|
||||
|
||||
homekit.driver = hk_driver
|
||||
homekit.bridge = HomeBridge(hass, hk_driver, "mock_bridge")
|
||||
|
||||
config_entry = MockConfigEntry(domain="test", data={})
|
||||
config_entry.add_to_hass(hass)
|
||||
device_entry = device_registry.async_get_or_create(
|
||||
config_entry_id=config_entry.entry_id,
|
||||
sw_version="0.16.0",
|
||||
model="Camera Server",
|
||||
manufacturer="Ubq",
|
||||
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
||||
)
|
||||
|
||||
entry = entity_registry.async_get_or_create(
|
||||
domain,
|
||||
"camera",
|
||||
"doorbell_sensor",
|
||||
device_id=device_entry.id,
|
||||
original_device_class=device_class,
|
||||
)
|
||||
camera = entity_registry.async_get_or_create(
|
||||
"camera", "camera", "demo", device_id=device_entry.id
|
||||
)
|
||||
|
||||
hass.states.async_set(
|
||||
entry.entity_id,
|
||||
STATE_ON,
|
||||
{ATTR_DEVICE_CLASS: device_class},
|
||||
)
|
||||
hass.states.async_set(camera.entity_id, STATE_ON)
|
||||
|
||||
with (
|
||||
patch.object(homekit.bridge, "add_accessory"),
|
||||
patch(f"{PATH_HOMEKIT}.async_show_setup_message"),
|
||||
patch(f"{PATH_HOMEKIT}.get_accessory") as mock_get_acc,
|
||||
patch("pyhap.accessory_driver.AccessoryDriver.async_start"),
|
||||
):
|
||||
await homekit.async_start()
|
||||
await hass.async_block_till_done()
|
||||
|
||||
mock_get_acc.assert_called_with(
|
||||
hass,
|
||||
ANY,
|
||||
ANY,
|
||||
ANY,
|
||||
{
|
||||
"manufacturer": "Ubq",
|
||||
"model": "Camera Server",
|
||||
"platform": "test",
|
||||
"sw_version": "0.16.0",
|
||||
"linked_doorbell_sensor": entry.entity_id,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("mock_async_zeroconf")
|
||||
async def test_homekit_finds_linked_humidity_sensors(
|
||||
hass: HomeAssistant,
|
||||
|
||||
Reference in New Issue
Block a user