mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 01:08:12 +00:00
Use saved volume when selecting preset in bluesound integration (#141079)
* Use load_preset to select preset as source * Add tests * Fix --------- Co-authored-by: Joostlek <joostlek@outlook.com>
This commit is contained in:
parent
50c12d4487
commit
32ee31b8c7
@ -501,18 +501,16 @@ class BluesoundPlayer(CoordinatorEntity[BluesoundCoordinator], MediaPlayerEntity
|
||||
return
|
||||
|
||||
# presets and inputs might have the same name; presets have priority
|
||||
url: str | None = None
|
||||
for input_ in self._inputs:
|
||||
if input_.text == source:
|
||||
url = input_.url
|
||||
await self._player.play_url(input_.url)
|
||||
return
|
||||
for preset in self._presets:
|
||||
if preset.name == source:
|
||||
url = preset.url
|
||||
await self._player.load_preset(preset.id)
|
||||
return
|
||||
|
||||
if url is None:
|
||||
raise ServiceValidationError(f"Source {source} not found")
|
||||
|
||||
await self._player.play_url(url)
|
||||
raise ServiceValidationError(f"Source {source} not found")
|
||||
|
||||
async def async_clear_playlist(self) -> None:
|
||||
"""Clear players playlist."""
|
||||
|
@ -102,8 +102,8 @@ class PlayerMockData:
|
||||
)
|
||||
player.presets = AsyncMock(
|
||||
return_value=[
|
||||
Preset("preset1", "1", "url1", "image1", None),
|
||||
Preset("preset2", "2", "url2", "image2", None),
|
||||
Preset("preset1", 1, "url1", "image1", None),
|
||||
Preset("preset2", 2, "url2", "image2", None),
|
||||
]
|
||||
)
|
||||
|
||||
|
@ -17,12 +17,14 @@ from homeassistant.components.bluesound.media_player import (
|
||||
SERVICE_SET_TIMER,
|
||||
)
|
||||
from homeassistant.components.media_player import (
|
||||
ATTR_INPUT_SOURCE,
|
||||
ATTR_MEDIA_VOLUME_LEVEL,
|
||||
DOMAIN as MEDIA_PLAYER_DOMAIN,
|
||||
SERVICE_MEDIA_NEXT_TRACK,
|
||||
SERVICE_MEDIA_PAUSE,
|
||||
SERVICE_MEDIA_PLAY,
|
||||
SERVICE_MEDIA_PREVIOUS_TRACK,
|
||||
SERVICE_SELECT_SOURCE,
|
||||
SERVICE_VOLUME_DOWN,
|
||||
SERVICE_VOLUME_MUTE,
|
||||
SERVICE_VOLUME_SET,
|
||||
@ -119,6 +121,32 @@ async def test_volume_down(
|
||||
player_mocks.player_data.player.volume.assert_called_once_with(level=9)
|
||||
|
||||
|
||||
async def test_select_input_source(
|
||||
hass: HomeAssistant, setup_config_entry: None, player_mocks: PlayerMocks
|
||||
) -> None:
|
||||
"""Test the media player select input source."""
|
||||
await hass.services.async_call(
|
||||
MEDIA_PLAYER_DOMAIN,
|
||||
SERVICE_SELECT_SOURCE,
|
||||
{ATTR_ENTITY_ID: "media_player.player_name1111", ATTR_INPUT_SOURCE: "input1"},
|
||||
)
|
||||
|
||||
player_mocks.player_data.player.play_url.assert_called_once_with("url1")
|
||||
|
||||
|
||||
async def test_select_preset_source(
|
||||
hass: HomeAssistant, setup_config_entry: None, player_mocks: PlayerMocks
|
||||
) -> None:
|
||||
"""Test the media player select preset source."""
|
||||
await hass.services.async_call(
|
||||
MEDIA_PLAYER_DOMAIN,
|
||||
SERVICE_SELECT_SOURCE,
|
||||
{ATTR_ENTITY_ID: "media_player.player_name1111", ATTR_INPUT_SOURCE: "preset1"},
|
||||
)
|
||||
|
||||
player_mocks.player_data.player.load_preset.assert_called_once_with(1)
|
||||
|
||||
|
||||
async def test_attributes_set(
|
||||
hass: HomeAssistant,
|
||||
setup_config_entry: None,
|
||||
|
Loading…
x
Reference in New Issue
Block a user