mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 12:47:08 +00:00
Fix cast config (#15143)
This commit is contained in:
parent
c8458fd7c5
commit
46ea28a4f8
@ -4,6 +4,7 @@ Provide functionality to interact with Cast devices on the network.
|
||||
For more details about this platform, please refer to the documentation at
|
||||
https://home-assistant.io/components/media_player.cast/
|
||||
"""
|
||||
import asyncio
|
||||
import logging
|
||||
import threading
|
||||
from typing import Optional, Tuple
|
||||
@ -199,9 +200,13 @@ async def async_setup_platform(hass: HomeAssistantType, config: ConfigType,
|
||||
|
||||
async def async_setup_entry(hass, config_entry, async_add_devices):
|
||||
"""Set up Cast from a config entry."""
|
||||
await _async_setup_platform(
|
||||
hass, hass.data[CAST_DOMAIN].get('media_player', {}),
|
||||
async_add_devices, None)
|
||||
config = hass.data[CAST_DOMAIN].get('media_player', {})
|
||||
if not isinstance(config, list):
|
||||
config = [config]
|
||||
|
||||
await asyncio.wait([
|
||||
_async_setup_platform(hass, cfg, async_add_devices, None)
|
||||
for cfg in config])
|
||||
|
||||
|
||||
async def _async_setup_platform(hass: HomeAssistantType, config: ConfigType,
|
||||
|
@ -17,6 +17,8 @@ from homeassistant.helpers.dispatcher import async_dispatcher_connect, \
|
||||
from homeassistant.components.media_player import cast
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
from tests.common import MockConfigEntry, mock_coro
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def cast_mock():
|
||||
@ -359,3 +361,56 @@ async def test_disconnect_on_stop(hass: HomeAssistantType):
|
||||
hass.bus.async_fire(EVENT_HOMEASSISTANT_STOP)
|
||||
await hass.async_block_till_done()
|
||||
assert chromecast.disconnect.call_count == 1
|
||||
|
||||
|
||||
async def test_entry_setup_no_config(hass: HomeAssistantType):
|
||||
"""Test setting up entry with no config.."""
|
||||
await async_setup_component(hass, 'cast', {})
|
||||
|
||||
with patch(
|
||||
'homeassistant.components.media_player.cast._async_setup_platform',
|
||||
return_value=mock_coro()) as mock_setup:
|
||||
await cast.async_setup_entry(hass, MockConfigEntry(), None)
|
||||
|
||||
assert len(mock_setup.mock_calls) == 1
|
||||
assert mock_setup.mock_calls[0][1][1] == {}
|
||||
|
||||
|
||||
async def test_entry_setup_single_config(hass: HomeAssistantType):
|
||||
"""Test setting up entry and having a single config option."""
|
||||
await async_setup_component(hass, 'cast', {
|
||||
'cast': {
|
||||
'media_player': {
|
||||
'host': 'bla'
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
with patch(
|
||||
'homeassistant.components.media_player.cast._async_setup_platform',
|
||||
return_value=mock_coro()) as mock_setup:
|
||||
await cast.async_setup_entry(hass, MockConfigEntry(), None)
|
||||
|
||||
assert len(mock_setup.mock_calls) == 1
|
||||
assert mock_setup.mock_calls[0][1][1] == {'host': 'bla'}
|
||||
|
||||
|
||||
async def test_entry_setup_list_config(hass: HomeAssistantType):
|
||||
"""Test setting up entry and having multiple config options."""
|
||||
await async_setup_component(hass, 'cast', {
|
||||
'cast': {
|
||||
'media_player': [
|
||||
{'host': 'bla'},
|
||||
{'host': 'blu'},
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
with patch(
|
||||
'homeassistant.components.media_player.cast._async_setup_platform',
|
||||
return_value=mock_coro()) as mock_setup:
|
||||
await cast.async_setup_entry(hass, MockConfigEntry(), None)
|
||||
|
||||
assert len(mock_setup.mock_calls) == 2
|
||||
assert mock_setup.mock_calls[0][1][1] == {'host': 'bla'}
|
||||
assert mock_setup.mock_calls[1][1][1] == {'host': 'blu'}
|
||||
|
Loading…
x
Reference in New Issue
Block a user