mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +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,19 +501,17 @@ class BluesoundPlayer(CoordinatorEntity[BluesoundCoordinator], MediaPlayerEntity
|
|||||||
return
|
return
|
||||||
|
|
||||||
# presets and inputs might have the same name; presets have priority
|
# presets and inputs might have the same name; presets have priority
|
||||||
url: str | None = None
|
|
||||||
for input_ in self._inputs:
|
for input_ in self._inputs:
|
||||||
if input_.text == source:
|
if input_.text == source:
|
||||||
url = input_.url
|
await self._player.play_url(input_.url)
|
||||||
|
return
|
||||||
for preset in self._presets:
|
for preset in self._presets:
|
||||||
if preset.name == source:
|
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")
|
raise ServiceValidationError(f"Source {source} not found")
|
||||||
|
|
||||||
await self._player.play_url(url)
|
|
||||||
|
|
||||||
async def async_clear_playlist(self) -> None:
|
async def async_clear_playlist(self) -> None:
|
||||||
"""Clear players playlist."""
|
"""Clear players playlist."""
|
||||||
if self.is_grouped and not self.is_leader:
|
if self.is_grouped and not self.is_leader:
|
||||||
|
@ -102,8 +102,8 @@ class PlayerMockData:
|
|||||||
)
|
)
|
||||||
player.presets = AsyncMock(
|
player.presets = AsyncMock(
|
||||||
return_value=[
|
return_value=[
|
||||||
Preset("preset1", "1", "url1", "image1", None),
|
Preset("preset1", 1, "url1", "image1", None),
|
||||||
Preset("preset2", "2", "url2", "image2", None),
|
Preset("preset2", 2, "url2", "image2", None),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -17,12 +17,14 @@ from homeassistant.components.bluesound.media_player import (
|
|||||||
SERVICE_SET_TIMER,
|
SERVICE_SET_TIMER,
|
||||||
)
|
)
|
||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
|
ATTR_INPUT_SOURCE,
|
||||||
ATTR_MEDIA_VOLUME_LEVEL,
|
ATTR_MEDIA_VOLUME_LEVEL,
|
||||||
DOMAIN as MEDIA_PLAYER_DOMAIN,
|
DOMAIN as MEDIA_PLAYER_DOMAIN,
|
||||||
SERVICE_MEDIA_NEXT_TRACK,
|
SERVICE_MEDIA_NEXT_TRACK,
|
||||||
SERVICE_MEDIA_PAUSE,
|
SERVICE_MEDIA_PAUSE,
|
||||||
SERVICE_MEDIA_PLAY,
|
SERVICE_MEDIA_PLAY,
|
||||||
SERVICE_MEDIA_PREVIOUS_TRACK,
|
SERVICE_MEDIA_PREVIOUS_TRACK,
|
||||||
|
SERVICE_SELECT_SOURCE,
|
||||||
SERVICE_VOLUME_DOWN,
|
SERVICE_VOLUME_DOWN,
|
||||||
SERVICE_VOLUME_MUTE,
|
SERVICE_VOLUME_MUTE,
|
||||||
SERVICE_VOLUME_SET,
|
SERVICE_VOLUME_SET,
|
||||||
@ -119,6 +121,32 @@ async def test_volume_down(
|
|||||||
player_mocks.player_data.player.volume.assert_called_once_with(level=9)
|
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(
|
async def test_attributes_set(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
setup_config_entry: None,
|
setup_config_entry: None,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user