core/tests/components/homeassistant/triggers/test_homeassistant.py

85 lines
2.5 KiB
Python
Raw Normal View History

"""The tests for the Event automation."""
from unittest.mock import patch
import pytest
2021-01-01 21:31:56 +00:00
import homeassistant.components.automation as automation
from homeassistant.core import CoreState, HomeAssistant
from homeassistant.helpers.typing import ConfigType
from homeassistant.setup import async_setup_component
from tests.common import async_mock_service
@pytest.mark.parametrize(
"hass_config",
[
{
automation.DOMAIN: {
"alias": "hello",
"trigger": {"platform": "homeassistant", "event": "start"},
"action": {
"service": "test.automation",
"data_template": {"id": "{{ trigger.id}}"},
},
}
}
],
)
async def test_if_fires_on_hass_start(
hass: HomeAssistant, mock_hass_config: None, hass_config: ConfigType
) -> None:
"""Test the firing when Home Assistant starts."""
2019-07-31 19:25:30 +00:00
calls = async_mock_service(hass, "test", "automation")
hass.state = CoreState.not_running
assert await async_setup_component(hass, automation.DOMAIN, hass_config)
2019-07-31 19:25:30 +00:00
assert automation.is_on(hass, "automation.hello")
assert len(calls) == 0
await hass.async_start()
await hass.async_block_till_done()
2019-07-31 19:25:30 +00:00
assert automation.is_on(hass, "automation.hello")
assert len(calls) == 1
await hass.services.async_call(
automation.DOMAIN, automation.SERVICE_RELOAD, blocking=True
)
2019-07-31 19:25:30 +00:00
assert automation.is_on(hass, "automation.hello")
assert len(calls) == 1
2021-03-31 12:56:04 +00:00
assert calls[0].data["id"] == 0
async def test_if_fires_on_hass_shutdown(hass: HomeAssistant) -> None:
"""Test the firing when Home Assistant shuts down."""
2019-07-31 19:25:30 +00:00
calls = async_mock_service(hass, "test", "automation")
hass.state = CoreState.not_running
2019-07-31 19:25:30 +00:00
assert await async_setup_component(
hass,
automation.DOMAIN,
{
automation.DOMAIN: {
"alias": "hello",
"trigger": {"platform": "homeassistant", "event": "shutdown"},
2021-03-31 12:56:04 +00:00
"action": {
"service": "test.automation",
"data_template": {"id": "{{ trigger.id}}"},
},
}
2019-07-31 19:25:30 +00:00
},
)
assert automation.is_on(hass, "automation.hello")
assert len(calls) == 0
await hass.async_start()
2019-07-31 19:25:30 +00:00
assert automation.is_on(hass, "automation.hello")
await hass.async_block_till_done()
assert len(calls) == 0
2019-07-31 19:25:30 +00:00
with patch.object(hass.loop, "stop"):
await hass.async_stop()
assert len(calls) == 1
2021-03-31 12:56:04 +00:00
assert calls[0].data["id"] == 0