added platform discovery code back into device_tracker (#10169)

This commit is contained in:
Egor Tsinko 2017-10-26 23:57:31 -06:00 committed by Fabian Affolter
parent d13f3eca92
commit acbf45d5f8
2 changed files with 26 additions and 1 deletions

View file

@ -21,7 +21,7 @@ from homeassistant.components import group, zone
from homeassistant.config import load_yaml_config_file, async_log_exception from homeassistant.config import load_yaml_config_file, async_log_exception
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers import config_per_platform from homeassistant.helpers import config_per_platform, discovery
from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity import Entity
from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.event import async_track_time_interval
from homeassistant.helpers.restore_state import async_get_last_state from homeassistant.helpers.restore_state import async_get_last_state
@ -175,6 +175,13 @@ def async_setup(hass: HomeAssistantType, config: ConfigType):
tracker.async_setup_group() tracker.async_setup_group()
@asyncio.coroutine
def async_platform_discovered(platform, info):
"""Load a platform."""
yield from async_setup_platform(platform, {}, disc_info=info)
discovery.async_listen_platform(hass, DOMAIN, async_platform_discovered)
# Clean up stale devices # Clean up stale devices
async_track_utc_time_change( async_track_utc_time_change(
hass, tracker.async_update_stale, second=range(0, 60, 5)) hass, tracker.async_update_stale, second=range(0, 60, 5))

View file

@ -11,6 +11,7 @@ import os
from homeassistant.components import zone from homeassistant.components import zone
from homeassistant.core import callback, State from homeassistant.core import callback, State
from homeassistant.setup import setup_component from homeassistant.setup import setup_component
from homeassistant.helpers import discovery
from homeassistant.loader import get_component from homeassistant.loader import get_component
from homeassistant.util.async import run_coroutine_threadsafe from homeassistant.util.async import run_coroutine_threadsafe
import homeassistant.util.dt as dt_util import homeassistant.util.dt as dt_util
@ -310,6 +311,23 @@ class TestComponentsDeviceTracker(unittest.TestCase):
'No http request for macvendor made!' 'No http request for macvendor made!'
self.assertEqual(tracker.devices['b827eb000000'].vendor, vendor_string) self.assertEqual(tracker.devices['b827eb000000'].vendor, vendor_string)
@patch(
'homeassistant.components.device_tracker.DeviceTracker.see')
@patch(
'homeassistant.components.device_tracker.demo.setup_scanner',
autospec=True)
def test_discover_platform(self, mock_demo_setup_scanner, mock_see):
"""Test discovery of device_tracker demo platform."""
assert device_tracker.DOMAIN not in self.hass.config.components
discovery.load_platform(
self.hass, device_tracker.DOMAIN, 'demo', {'test_key': 'test_val'},
{})
self.hass.block_till_done()
assert device_tracker.DOMAIN in self.hass.config.components
assert mock_demo_setup_scanner.called
assert mock_demo_setup_scanner.call_args[0] == (
self.hass, {}, mock_see, {'test_key': 'test_val'})
def test_update_stale(self): def test_update_stale(self):
"""Test stalled update.""" """Test stalled update."""
scanner = get_component('device_tracker.test').SCANNER scanner = get_component('device_tracker.test').SCANNER