Async timer tests (#18683)

This commit is contained in:
Adam Mills 2018-11-24 16:12:19 -05:00 committed by GitHub
parent 50a30d4dc9
commit 66f1643de5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,12 +1,11 @@
"""The tests for the timer component.""" """The tests for the timer component."""
# pylint: disable=protected-access # pylint: disable=protected-access
import asyncio import asyncio
import unittest
import logging import logging
from datetime import timedelta from datetime import timedelta
from homeassistant.core import CoreState from homeassistant.core import CoreState
from homeassistant.setup import setup_component, async_setup_component from homeassistant.setup import async_setup_component
from homeassistant.components.timer import ( from homeassistant.components.timer import (
DOMAIN, CONF_DURATION, CONF_NAME, STATUS_ACTIVE, STATUS_IDLE, DOMAIN, CONF_DURATION, CONF_NAME, STATUS_ACTIVE, STATUS_IDLE,
STATUS_PAUSED, CONF_ICON, ATTR_DURATION, EVENT_TIMER_FINISHED, STATUS_PAUSED, CONF_ICON, ATTR_DURATION, EVENT_TIMER_FINISHED,
@ -15,74 +14,62 @@ from homeassistant.components.timer import (
from homeassistant.const import (ATTR_ICON, ATTR_FRIENDLY_NAME, CONF_ENTITY_ID) from homeassistant.const import (ATTR_ICON, ATTR_FRIENDLY_NAME, CONF_ENTITY_ID)
from homeassistant.util.dt import utcnow from homeassistant.util.dt import utcnow
from tests.common import (get_test_home_assistant, async_fire_time_changed) from tests.common import async_fire_time_changed
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
class TestTimer(unittest.TestCase): async def test_config(hass):
"""Test the timer component.""" """Test config."""
invalid_configs = [
None,
1,
{},
{'name with space': None},
]
# pylint: disable=invalid-name for cfg in invalid_configs:
def setUp(self): assert not await async_setup_component(hass, DOMAIN, {DOMAIN: cfg})
"""Set up things to be run when tests are started."""
self.hass = get_test_home_assistant()
# pylint: disable=invalid-name
def tearDown(self):
"""Stop everything that was started."""
self.hass.stop()
def test_config(self): async def test_config_options(hass):
"""Test config.""" """Test configuration options."""
invalid_configs = [ count_start = len(hass.states.async_entity_ids())
None,
1,
{},
{'name with space': None},
]
for cfg in invalid_configs: _LOGGER.debug('ENTITIES @ start: %s', hass.states.async_entity_ids())
assert not setup_component(self.hass, DOMAIN, {DOMAIN: cfg})
def test_config_options(self): config = {
"""Test configuration options.""" DOMAIN: {
count_start = len(self.hass.states.entity_ids()) 'test_1': {},
'test_2': {
_LOGGER.debug('ENTITIES @ start: %s', self.hass.states.entity_ids()) CONF_NAME: 'Hello World',
CONF_ICON: 'mdi:work',
config = { CONF_DURATION: 10,
DOMAIN: {
'test_1': {},
'test_2': {
CONF_NAME: 'Hello World',
CONF_ICON: 'mdi:work',
CONF_DURATION: 10,
}
} }
} }
}
assert setup_component(self.hass, 'timer', config) assert await async_setup_component(hass, 'timer', config)
self.hass.block_till_done() await hass.async_block_till_done()
assert count_start + 2 == len(self.hass.states.entity_ids()) assert count_start + 2 == len(hass.states.async_entity_ids())
self.hass.block_till_done() await hass.async_block_till_done()
state_1 = self.hass.states.get('timer.test_1') state_1 = hass.states.get('timer.test_1')
state_2 = self.hass.states.get('timer.test_2') state_2 = hass.states.get('timer.test_2')
assert state_1 is not None assert state_1 is not None
assert state_2 is not None assert state_2 is not None
assert STATUS_IDLE == state_1.state assert STATUS_IDLE == state_1.state
assert ATTR_ICON not in state_1.attributes assert ATTR_ICON not in state_1.attributes
assert ATTR_FRIENDLY_NAME not in state_1.attributes assert ATTR_FRIENDLY_NAME not in state_1.attributes
assert STATUS_IDLE == state_2.state assert STATUS_IDLE == state_2.state
assert 'Hello World' == \ assert 'Hello World' == \
state_2.attributes.get(ATTR_FRIENDLY_NAME) state_2.attributes.get(ATTR_FRIENDLY_NAME)
assert 'mdi:work' == state_2.attributes.get(ATTR_ICON) assert 'mdi:work' == state_2.attributes.get(ATTR_ICON)
assert '0:00:10' == state_2.attributes.get(ATTR_DURATION) assert '0:00:10' == state_2.attributes.get(ATTR_DURATION)
@asyncio.coroutine @asyncio.coroutine