core/tests/components/automation/test_homeassistant.py

69 lines
2.1 KiB
Python
Raw Normal View History

"""The tests for the Event automation."""
from unittest.mock import Mock, patch
import homeassistant.components.automation as automation
from homeassistant.core import CoreState
from homeassistant.setup import async_setup_component
2017-06-25 17:53:15 +00:00
from tests.common import async_mock_service, mock_coro
async def test_if_fires_on_hass_start(hass):
"""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
config = {
automation.DOMAIN: {
2019-07-31 19:25:30 +00:00
"alias": "hello",
"trigger": {"platform": "homeassistant", "event": "start"},
"action": {"service": "test.automation"},
}
}
assert await async_setup_component(hass, automation.DOMAIN, config)
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")
assert len(calls) == 1
2019-07-31 19:25:30 +00:00
with patch(
"homeassistant.config.async_hass_config_yaml",
Mock(return_value=mock_coro(config)),
):
await hass.services.async_call(
2019-07-31 19:25:30 +00:00
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
async def test_if_fires_on_hass_shutdown(hass):
"""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"},
"action": {"service": "test.automation"},
}
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")
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