Add support for remove services / Reload script support (#6441)
* Add support for remove services / Reload script support * Reload support for scripts * Add more unittest for services * Add unittest for script reload * Address paulus comments
This commit is contained in:
parent
e7f442d66b
commit
c937a7bcb0
7 changed files with 197 additions and 35 deletions
|
@ -16,7 +16,8 @@ from homeassistant.util.unit_system import (METRIC_SYSTEM)
|
|||
from homeassistant.const import (
|
||||
__version__, EVENT_STATE_CHANGED, ATTR_FRIENDLY_NAME, CONF_UNIT_SYSTEM,
|
||||
ATTR_NOW, EVENT_TIME_CHANGED, EVENT_HOMEASSISTANT_STOP,
|
||||
EVENT_HOMEASSISTANT_CLOSE, EVENT_HOMEASSISTANT_START)
|
||||
EVENT_HOMEASSISTANT_CLOSE, EVENT_HOMEASSISTANT_START,
|
||||
EVENT_SERVICE_REGISTERED, EVENT_SERVICE_REMOVED)
|
||||
|
||||
from tests.common import get_test_home_assistant
|
||||
|
||||
|
@ -619,6 +620,15 @@ class TestServiceRegistry(unittest.TestCase):
|
|||
|
||||
self.services.register("Test_Domain", "TEST_SERVICE", mock_service)
|
||||
|
||||
self.calls_register = []
|
||||
|
||||
@ha.callback
|
||||
def mock_event_register(event):
|
||||
"""Mock register event."""
|
||||
self.calls_register.append(event)
|
||||
|
||||
self.hass.bus.listen(EVENT_SERVICE_REGISTERED, mock_event_register)
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
def tearDown(self):
|
||||
"""Stop down stuff we started."""
|
||||
|
@ -649,8 +659,13 @@ class TestServiceRegistry(unittest.TestCase):
|
|||
"""Service handler."""
|
||||
calls.append(call)
|
||||
|
||||
self.services.register("test_domain", "register_calls",
|
||||
service_handler)
|
||||
self.services.register(
|
||||
"test_domain", "register_calls", service_handler)
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert len(self.calls_register) == 1
|
||||
assert self.calls_register[-1].data['domain'] == 'test_domain'
|
||||
assert self.calls_register[-1].data['service'] == 'register_calls'
|
||||
|
||||
self.assertTrue(
|
||||
self.services.call('test_domain', 'REGISTER_CALLS', blocking=True))
|
||||
|
@ -675,8 +690,14 @@ class TestServiceRegistry(unittest.TestCase):
|
|||
"""Service handler coroutine."""
|
||||
calls.append(call)
|
||||
|
||||
self.services.register('test_domain', 'register_calls',
|
||||
service_handler)
|
||||
self.services.register(
|
||||
'test_domain', 'register_calls', service_handler)
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert len(self.calls_register) == 1
|
||||
assert self.calls_register[-1].data['domain'] == 'test_domain'
|
||||
assert self.calls_register[-1].data['service'] == 'register_calls'
|
||||
|
||||
self.assertTrue(
|
||||
self.services.call('test_domain', 'REGISTER_CALLS', blocking=True))
|
||||
self.hass.block_till_done()
|
||||
|
@ -691,13 +712,56 @@ class TestServiceRegistry(unittest.TestCase):
|
|||
"""Service handler coroutine."""
|
||||
calls.append(call)
|
||||
|
||||
self.services.register('test_domain', 'register_calls',
|
||||
service_handler)
|
||||
self.services.register(
|
||||
'test_domain', 'register_calls', service_handler)
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert len(self.calls_register) == 1
|
||||
assert self.calls_register[-1].data['domain'] == 'test_domain'
|
||||
assert self.calls_register[-1].data['service'] == 'register_calls'
|
||||
|
||||
self.assertTrue(
|
||||
self.services.call('test_domain', 'REGISTER_CALLS', blocking=True))
|
||||
self.hass.block_till_done()
|
||||
self.assertEqual(1, len(calls))
|
||||
|
||||
def test_remove_service(self):
|
||||
"""Test remove service."""
|
||||
calls_remove = []
|
||||
|
||||
@ha.callback
|
||||
def mock_event_remove(event):
|
||||
"""Mock register event."""
|
||||
calls_remove.append(event)
|
||||
|
||||
self.hass.bus.listen(EVENT_SERVICE_REMOVED, mock_event_remove)
|
||||
|
||||
assert self.services.has_service('test_Domain', 'test_Service')
|
||||
|
||||
self.services.remove('test_Domain', 'test_Service')
|
||||
self.hass.block_till_done()
|
||||
|
||||
assert not self.services.has_service('test_Domain', 'test_Service')
|
||||
assert len(calls_remove) == 1
|
||||
assert calls_remove[-1].data['domain'] == 'test_domain'
|
||||
assert calls_remove[-1].data['service'] == 'test_service'
|
||||
|
||||
def test_remove_service_that_not_exists(self):
|
||||
"""Test remove service that not exists."""
|
||||
calls_remove = []
|
||||
|
||||
@ha.callback
|
||||
def mock_event_remove(event):
|
||||
"""Mock register event."""
|
||||
calls_remove.append(event)
|
||||
|
||||
self.hass.bus.listen(EVENT_SERVICE_REMOVED, mock_event_remove)
|
||||
|
||||
assert not self.services.has_service('test_xxx', 'test_yyy')
|
||||
self.services.remove('test_xxx', 'test_yyy')
|
||||
self.hass.block_till_done()
|
||||
assert len(calls_remove) == 0
|
||||
|
||||
|
||||
class TestConfig(unittest.TestCase):
|
||||
"""Test configuration methods."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue