Fix MQTT camera test (#7878)
This commit is contained in:
parent
c07bf551d9
commit
84fe4f75df
2 changed files with 43 additions and 40 deletions
|
@ -12,7 +12,7 @@ from contextlib import contextmanager
|
|||
from aiohttp import web
|
||||
|
||||
from homeassistant import core as ha, loader
|
||||
from homeassistant.setup import setup_component
|
||||
from homeassistant.setup import setup_component, async_setup_component
|
||||
from homeassistant.config import async_process_component_config
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
||||
from homeassistant.helpers.entity import ToggleEntity
|
||||
|
@ -45,12 +45,27 @@ def threadsafe_callback_factory(func):
|
|||
def threadsafe(*args, **kwargs):
|
||||
"""Call func threadsafe."""
|
||||
hass = args[0]
|
||||
run_callback_threadsafe(
|
||||
return run_callback_threadsafe(
|
||||
hass.loop, ft.partial(func, *args, **kwargs)).result()
|
||||
|
||||
return threadsafe
|
||||
|
||||
|
||||
def threadsafe_coroutine_factory(func):
|
||||
"""Create threadsafe functions out of coroutine.
|
||||
|
||||
Callback needs to have `hass` as first argument.
|
||||
"""
|
||||
@ft.wraps(func)
|
||||
def threadsafe(*args, **kwargs):
|
||||
"""Call func threadsafe."""
|
||||
hass = args[0]
|
||||
return run_coroutine_threadsafe(
|
||||
func(*args, **kwargs), hass.loop).result()
|
||||
|
||||
return threadsafe
|
||||
|
||||
|
||||
def get_test_config_dir(*add_path):
|
||||
"""Return a path to a test config dir."""
|
||||
return os.path.join(os.path.dirname(__file__), 'testing_config', *add_path)
|
||||
|
@ -258,11 +273,12 @@ def mock_http_component_app(hass, api_password=None):
|
|||
return app
|
||||
|
||||
|
||||
def mock_mqtt_component(hass):
|
||||
@asyncio.coroutine
|
||||
def async_mock_mqtt_component(hass):
|
||||
"""Mock the MQTT component."""
|
||||
with patch('homeassistant.components.mqtt.MQTT') as mock_mqtt:
|
||||
mock_mqtt().async_connect.return_value = mock_coro(True)
|
||||
setup_component(hass, mqtt.DOMAIN, {
|
||||
yield from async_setup_component(hass, mqtt.DOMAIN, {
|
||||
mqtt.DOMAIN: {
|
||||
mqtt.CONF_BROKER: 'mock-broker',
|
||||
}
|
||||
|
@ -270,6 +286,9 @@ def mock_mqtt_component(hass):
|
|||
return mock_mqtt
|
||||
|
||||
|
||||
mock_mqtt_component = threadsafe_coroutine_factory(async_mock_mqtt_component)
|
||||
|
||||
|
||||
@ha.callback
|
||||
def mock_component(hass, component):
|
||||
"""Mock a component is setup."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue