1
0
mirror of https://github.com/home-assistant/core.git synced 2026-05-16 05:21:35 +01:00
Files
core/tests/components/axis/test_event.py
T
2026-04-29 12:29:58 +01:00

94 lines
2.6 KiB
Python

"""Axis event platform tests."""
from unittest.mock import patch
import pytest
from homeassistant.components.event import (
ATTR_EVENT_TYPE,
ATTR_EVENT_TYPES,
DOMAIN as EVENT_DOMAIN,
)
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from .conftest import ConfigEntryFactoryType, RtspEventMock
async def test_doorbell_event_entity_created_and_triggered(
hass: HomeAssistant,
config_entry_factory: ConfigEntryFactoryType,
mock_rtsp_event: RtspEventMock,
) -> None:
"""Test doorbell event entity creation and trigger for matching model and port."""
with patch("homeassistant.components.axis.PLATFORMS", [Platform.EVENT]):
config_entry = await config_entry_factory()
config_entry.runtime_data.config.model = "I8116-E"
mock_rtsp_event(
topic="tns1:Device/tnsaxis:IO/Port",
data_type="state",
data_value="0",
operation="Initialized",
source_name="port",
source_idx="0",
)
await hass.async_block_till_done()
event_entities = hass.states.async_entity_ids(EVENT_DOMAIN)
assert len(event_entities) == 1
state = hass.states.get(event_entities[0])
assert state is not None
assert state.attributes[ATTR_EVENT_TYPES] == ["ring"]
mock_rtsp_event(
topic="tns1:Device/tnsaxis:IO/Port",
data_type="state",
data_value="1",
operation="Changed",
source_name="port",
source_idx="0",
)
await hass.async_block_till_done()
state = hass.states.get(event_entities[0])
assert state is not None
assert state.attributes[ATTR_EVENT_TYPE] == "ring"
@pytest.mark.parametrize(
("model", "topic", "source_idx"),
[
("A1234", "tns1:Device/tnsaxis:IO/Port", "0"),
("I8116-E", "tns1:Device/tnsaxis:IO/Port", "1"),
("I8116-E", "tns1:Device/tnsaxis:Sensor/PIR", "0"),
],
)
async def test_doorbell_event_entity_filtering(
hass: HomeAssistant,
config_entry_factory: ConfigEntryFactoryType,
mock_rtsp_event: RtspEventMock,
model: str,
topic: str,
source_idx: str,
) -> None:
"""Test doorbell event entity is filtered by model, topic and port."""
with patch("homeassistant.components.axis.PLATFORMS", [Platform.EVENT]):
config_entry = await config_entry_factory()
config_entry.runtime_data.config.model = model
mock_rtsp_event(
topic=topic,
data_type="state",
data_value="1",
operation="Initialized",
source_name="port",
source_idx=source_idx,
)
await hass.async_block_till_done()
assert len(hass.states.async_entity_ids(EVENT_DOMAIN)) == 0