Add script + extra config validators
* Add config validation and extra validators * Address PR comments
This commit is contained in:
parent
7ed5055fa2
commit
e140e9b8ab
9 changed files with 404 additions and 88 deletions
|
@ -3,6 +3,7 @@
|
|||
from datetime import timedelta
|
||||
import unittest
|
||||
|
||||
from homeassistant.bootstrap import _setup_component
|
||||
from homeassistant.components import script
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
|
@ -18,46 +19,43 @@ class TestScript(unittest.TestCase):
|
|||
def setUp(self): # pylint: disable=invalid-name
|
||||
"""Setup things to be run when tests are started."""
|
||||
self.hass = get_test_home_assistant()
|
||||
self.hass.config.components.append('group')
|
||||
|
||||
def tearDown(self): # pylint: disable=invalid-name
|
||||
"""Stop down everything that was started."""
|
||||
self.hass.stop()
|
||||
|
||||
def test_setup_with_missing_sequence(self):
|
||||
"""Test setup with missing sequence."""
|
||||
self.assertTrue(script.setup(self.hass, {
|
||||
'script': {
|
||||
'test': {}
|
||||
}
|
||||
}))
|
||||
|
||||
self.assertEqual(0, len(self.hass.states.entity_ids('script')))
|
||||
|
||||
def test_setup_with_invalid_object_id(self):
|
||||
"""Test setup with invalid objects."""
|
||||
self.assertTrue(script.setup(self.hass, {
|
||||
'script': {
|
||||
def test_setup_with_invalid_configs(self):
|
||||
"""Test setup with invalid configs."""
|
||||
for value in (
|
||||
{'test': {}},
|
||||
{
|
||||
'test hello world': {
|
||||
'sequence': []
|
||||
}
|
||||
}
|
||||
}))
|
||||
|
||||
self.assertEqual(0, len(self.hass.states.entity_ids('script')))
|
||||
|
||||
def test_setup_with_dict_as_sequence(self):
|
||||
"""Test setup with dict as sequence."""
|
||||
self.assertTrue(script.setup(self.hass, {
|
||||
'script': {
|
||||
},
|
||||
{
|
||||
'test': {
|
||||
'sequence': {
|
||||
'event': 'test_event'
|
||||
}
|
||||
}
|
||||
}
|
||||
}))
|
||||
},
|
||||
{
|
||||
'test': {
|
||||
'sequence': {
|
||||
'event': 'test_event',
|
||||
'service': 'homeassistant.turn_on',
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
self.assertEqual(0, len(self.hass.states.entity_ids('script')))
|
||||
):
|
||||
assert not _setup_component(self.hass, 'script', {
|
||||
'script': value
|
||||
}), 'Script loaded with wrong config {}'.format(value)
|
||||
|
||||
self.assertEqual(0, len(self.hass.states.entity_ids('script')))
|
||||
|
||||
def test_firing_event(self):
|
||||
"""Test the firing of events."""
|
||||
|
@ -70,7 +68,7 @@ class TestScript(unittest.TestCase):
|
|||
|
||||
self.hass.bus.listen(event, record_event)
|
||||
|
||||
self.assertTrue(script.setup(self.hass, {
|
||||
assert _setup_component(self.hass, 'script', {
|
||||
'script': {
|
||||
'test': {
|
||||
'alias': 'Test Script',
|
||||
|
@ -82,7 +80,7 @@ class TestScript(unittest.TestCase):
|
|||
}]
|
||||
}
|
||||
}
|
||||
}))
|
||||
})
|
||||
|
||||
script.turn_on(self.hass, ENTITY_ID)
|
||||
self.hass.pool.block_till_done()
|
||||
|
@ -102,7 +100,7 @@ class TestScript(unittest.TestCase):
|
|||
|
||||
self.hass.services.register('test', 'script', record_call)
|
||||
|
||||
self.assertTrue(script.setup(self.hass, {
|
||||
assert _setup_component(self.hass, 'script', {
|
||||
'script': {
|
||||
'test': {
|
||||
'sequence': [{
|
||||
|
@ -113,7 +111,7 @@ class TestScript(unittest.TestCase):
|
|||
}]
|
||||
}
|
||||
}
|
||||
}))
|
||||
})
|
||||
|
||||
script.turn_on(self.hass, ENTITY_ID)
|
||||
self.hass.pool.block_till_done()
|
||||
|
@ -131,7 +129,7 @@ class TestScript(unittest.TestCase):
|
|||
|
||||
self.hass.services.register('test', 'script', record_call)
|
||||
|
||||
self.assertTrue(script.setup(self.hass, {
|
||||
assert _setup_component(self.hass, 'script', {
|
||||
'script': {
|
||||
'test': {
|
||||
'sequence': [{
|
||||
|
@ -153,7 +151,7 @@ class TestScript(unittest.TestCase):
|
|||
}]
|
||||
}
|
||||
}
|
||||
}))
|
||||
})
|
||||
|
||||
script.turn_on(self.hass, ENTITY_ID)
|
||||
self.hass.pool.block_till_done()
|
||||
|
@ -172,7 +170,7 @@ class TestScript(unittest.TestCase):
|
|||
|
||||
self.hass.bus.listen(event, record_event)
|
||||
|
||||
self.assertTrue(script.setup(self.hass, {
|
||||
assert _setup_component(self.hass, 'script', {
|
||||
'script': {
|
||||
'test': {
|
||||
'sequence': [{
|
||||
|
@ -186,7 +184,7 @@ class TestScript(unittest.TestCase):
|
|||
}]
|
||||
}
|
||||
}
|
||||
}))
|
||||
})
|
||||
|
||||
script.turn_on(self.hass, ENTITY_ID)
|
||||
self.hass.pool.block_till_done()
|
||||
|
@ -219,7 +217,7 @@ class TestScript(unittest.TestCase):
|
|||
|
||||
self.hass.bus.listen(event, record_event)
|
||||
|
||||
self.assertTrue(script.setup(self.hass, {
|
||||
assert _setup_component(self.hass, 'script', {
|
||||
'script': {
|
||||
'test': {
|
||||
'sequence': [{
|
||||
|
@ -231,7 +229,7 @@ class TestScript(unittest.TestCase):
|
|||
}]
|
||||
}
|
||||
}
|
||||
}))
|
||||
})
|
||||
|
||||
script.turn_on(self.hass, ENTITY_ID)
|
||||
self.hass.pool.block_till_done()
|
||||
|
@ -263,7 +261,7 @@ class TestScript(unittest.TestCase):
|
|||
|
||||
self.hass.bus.listen(event, record_event)
|
||||
|
||||
self.assertTrue(script.setup(self.hass, {
|
||||
assert _setup_component(self.hass, 'script', {
|
||||
'script': {
|
||||
'test': {
|
||||
'sequence': [{
|
||||
|
@ -275,7 +273,7 @@ class TestScript(unittest.TestCase):
|
|||
}]
|
||||
}
|
||||
}
|
||||
}))
|
||||
})
|
||||
|
||||
script.turn_on(self.hass, ENTITY_ID)
|
||||
self.hass.pool.block_till_done()
|
||||
|
@ -298,7 +296,7 @@ class TestScript(unittest.TestCase):
|
|||
|
||||
self.hass.bus.listen(event, record_event)
|
||||
|
||||
self.assertTrue(script.setup(self.hass, {
|
||||
assert _setup_component(self.hass, 'script', {
|
||||
'script': {
|
||||
'test': {
|
||||
'sequence': [{
|
||||
|
@ -310,7 +308,7 @@ class TestScript(unittest.TestCase):
|
|||
}]
|
||||
}
|
||||
}
|
||||
}))
|
||||
})
|
||||
|
||||
script.toggle(self.hass, ENTITY_ID)
|
||||
self.hass.pool.block_till_done()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue