mirror of https://github.com/home-assistant/core
87 lines
2.7 KiB
Python
87 lines
2.7 KiB
Python
"""The tests for the notify demo platform."""
|
|
|
|
from collections.abc import Generator
|
|
from unittest.mock import patch
|
|
|
|
import pytest
|
|
|
|
from homeassistant.components import notify
|
|
from homeassistant.components.demo import DOMAIN
|
|
import homeassistant.components.demo.notify as demo
|
|
from homeassistant.const import Platform
|
|
from homeassistant.core import Event, HomeAssistant
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
from tests.common import MockConfigEntry, async_capture_events
|
|
|
|
|
|
@pytest.fixture
|
|
def notify_only() -> Generator[None]:
|
|
"""Enable only the notify platform."""
|
|
with patch(
|
|
"homeassistant.components.demo.COMPONENTS_WITH_CONFIG_ENTRY_DEMO_PLATFORM",
|
|
[Platform.NOTIFY],
|
|
):
|
|
yield
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
async def setup_notify(hass: HomeAssistant, notify_only: None) -> None:
|
|
"""Initialize setup demo Notify entity."""
|
|
entry = MockConfigEntry(domain=DOMAIN)
|
|
entry.add_to_hass(hass)
|
|
await hass.config_entries.async_setup(entry.entry_id)
|
|
await hass.async_block_till_done()
|
|
state = hass.states.get("notify.notifier")
|
|
assert state is not None
|
|
|
|
|
|
@pytest.fixture
|
|
def events(hass: HomeAssistant) -> list[Event]:
|
|
"""Fixture that catches notify events."""
|
|
return async_capture_events(hass, demo.EVENT_NOTIFY)
|
|
|
|
|
|
async def test_sending_message(hass: HomeAssistant, events: list[Event]) -> None:
|
|
"""Test sending a message."""
|
|
data = {
|
|
"entity_id": "notify.notifier",
|
|
notify.ATTR_MESSAGE: "Test message",
|
|
}
|
|
await hass.services.async_call(notify.DOMAIN, notify.SERVICE_SEND_MESSAGE, data)
|
|
await hass.async_block_till_done()
|
|
last_event = events[-1]
|
|
assert last_event.data == {notify.ATTR_MESSAGE: "Test message"}
|
|
|
|
data[notify.ATTR_TITLE] = "My title"
|
|
# Test with Title
|
|
await hass.services.async_call(notify.DOMAIN, notify.SERVICE_SEND_MESSAGE, data)
|
|
await hass.async_block_till_done()
|
|
last_event = events[-1]
|
|
assert last_event.data == {
|
|
notify.ATTR_MESSAGE: "Test message",
|
|
notify.ATTR_TITLE: "My title",
|
|
}
|
|
|
|
|
|
async def test_calling_notify_from_script_loaded_from_yaml(
|
|
hass: HomeAssistant, events: list[Event]
|
|
) -> None:
|
|
"""Test if we can call a notify from a script."""
|
|
step = {
|
|
"service": "notify.send_message",
|
|
"data": {
|
|
"entity_id": "notify.notifier",
|
|
},
|
|
"data_template": {"message": "Test 123 {{ 2 + 2 }}\n"},
|
|
}
|
|
await async_setup_component(
|
|
hass, "script", {"script": {"test": {"sequence": step}}}
|
|
)
|
|
await hass.services.async_call("script", "test")
|
|
await hass.async_block_till_done()
|
|
assert len(events) == 1
|
|
assert events[0].data == {
|
|
"message": "Test 123 4",
|
|
}
|