Add test for delay on automations (#4630)
This commit is contained in:
parent
6ddbb4d568
commit
66473120ab
1 changed files with 56 additions and 1 deletions
|
@ -1,5 +1,6 @@
|
|||
"""The tests for the automation component."""
|
||||
import unittest
|
||||
from datetime import timedelta
|
||||
from unittest.mock import patch
|
||||
|
||||
from homeassistant.core import callback
|
||||
|
@ -9,7 +10,8 @@ from homeassistant.const import ATTR_ENTITY_ID
|
|||
from homeassistant.exceptions import HomeAssistantError
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
from tests.common import get_test_home_assistant, assert_setup_component
|
||||
from tests.common import get_test_home_assistant, assert_setup_component, \
|
||||
fire_time_changed
|
||||
|
||||
|
||||
class TestAutomation(unittest.TestCase):
|
||||
|
@ -85,6 +87,59 @@ class TestAutomation(unittest.TestCase):
|
|||
assert state is not None
|
||||
assert state.attributes.get('entity_id') == ('automation.hello',)
|
||||
|
||||
def test_action_delay(self):
|
||||
"""Test action delay."""
|
||||
assert setup_component(self.hass, automation.DOMAIN, {
|
||||
automation.DOMAIN: {
|
||||
'alias': 'hello',
|
||||
'trigger': {
|
||||
'platform': 'event',
|
||||
'event_type': 'test_event',
|
||||
},
|
||||
'action': [
|
||||
{
|
||||
'service': 'test.automation',
|
||||
'data_template': {
|
||||
'some': '{{ trigger.platform }} - '
|
||||
'{{ trigger.event.event_type }}'
|
||||
}
|
||||
},
|
||||
{'delay': {'minutes': '10'}},
|
||||
{
|
||||
'service': 'test.automation',
|
||||
'data_template': {
|
||||
'some': '{{ trigger.platform }} - '
|
||||
'{{ trigger.event.event_type }}'
|
||||
}
|
||||
},
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
time = dt_util.utcnow()
|
||||
|
||||
with patch('homeassistant.components.automation.utcnow',
|
||||
return_value=time):
|
||||
self.hass.bus.fire('test_event')
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert len(self.calls) == 1
|
||||
assert self.calls[0].data['some'] == 'event - test_event'
|
||||
|
||||
future = dt_util.utcnow() + timedelta(minutes=10)
|
||||
fire_time_changed(self.hass, future)
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert len(self.calls) == 2
|
||||
assert self.calls[1].data['some'] == 'event - test_event'
|
||||
|
||||
state = self.hass.states.get('automation.hello')
|
||||
assert state is not None
|
||||
assert state.attributes.get('last_triggered') == time
|
||||
state = self.hass.states.get('group.all_automations')
|
||||
assert state is not None
|
||||
assert state.attributes.get('entity_id') == ('automation.hello',)
|
||||
|
||||
def test_service_specify_entity_id(self):
|
||||
"""Test service data."""
|
||||
assert setup_component(self.hass, automation.DOMAIN, {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue