play item tests

This commit is contained in:
peteS-UK 2024-11-05 23:28:58 +00:00
parent dd547000d5
commit 75ae985b39
2 changed files with 94 additions and 3 deletions

View File

@ -762,10 +762,10 @@ class SqueezeBoxMediaPlayerEntity(
query_result = await self._player.async_query(*_param) query_result = await self._player.async_query(*_param)
if query_result["count"] == 0: if int(query_result["count"]) == 0:
raise ServiceValidationError("Search returned zero results") raise ServiceValidationError("Search returned zero results")
if query_result["count"] > 1: if int(query_result["count"]) > 1:
raise ServiceValidationError( raise ServiceValidationError(
f"Search returned {query_result['count']} results. Each search must return only one result" f"Search returned {query_result['count']} results. Each search must return only one result"
) )

View File

@ -42,10 +42,13 @@ from homeassistant.components.squeezebox.const import (
) )
from homeassistant.components.squeezebox.media_player import ( from homeassistant.components.squeezebox.media_player import (
ATTR_PARAMETERS, ATTR_PARAMETERS,
ATTR_PLAYLIST_ACTION,
ATTR_RETURN_ITEMS, ATTR_RETURN_ITEMS,
ATTR_SEARCH_STRING, ATTR_SEARCH_STRING,
ATTR_SEARCH_TYPE,
SERVICE_CALL_METHOD, SERVICE_CALL_METHOD,
SERVICE_CALL_QUERY, SERVICE_CALL_QUERY,
SERVICE_PLAY,
SERVICE_SEARCH, SERVICE_SEARCH,
) )
from homeassistant.const import ( from homeassistant.const import (
@ -779,10 +782,98 @@ async def test_squeezebox_call_method(
) )
async def test_squeezebox_play_album( async def test_squeezebox_play_other_item(
hass: HomeAssistant, configured_player: MagicMock hass: HomeAssistant, configured_player: MagicMock
) -> None: ) -> None:
"""Test query service call.""" """Test query service call."""
await hass.services.async_call(
DOMAIN,
SERVICE_PLAY,
{
ATTR_ENTITY_ID: "media_player.test_player",
ATTR_COMMAND: "album",
ATTR_SEARCH_TYPE: "item",
ATTR_SEARCH_STRING: FAKE_VALID_ITEM_ID,
ATTR_PLAYLIST_ACTION: "play",
},
blocking=True,
)
assert configured_player.async_load_playlist.call_count == 1
await hass.services.async_call(
DOMAIN,
SERVICE_PLAY,
{
ATTR_ENTITY_ID: "media_player.test_player",
ATTR_COMMAND: "album",
ATTR_SEARCH_TYPE: "item",
ATTR_SEARCH_STRING: FAKE_VALID_ITEM_ID,
ATTR_PLAYLIST_ACTION: "add",
},
blocking=True,
)
assert configured_player.async_load_playlist.call_count == 2
await hass.services.async_call(
DOMAIN,
SERVICE_PLAY,
{
ATTR_ENTITY_ID: "media_player.test_player",
ATTR_COMMAND: "album",
ATTR_SEARCH_TYPE: "item",
ATTR_SEARCH_STRING: FAKE_VALID_ITEM_ID,
ATTR_PLAYLIST_ACTION: "next",
},
blocking=True,
)
assert configured_player.async_load_playlist.call_count == 3
async def test_squeezebox_play_favorite_item(
hass: HomeAssistant, configured_player: MagicMock
) -> None:
"""Test query service call."""
await hass.services.async_call(
DOMAIN,
SERVICE_PLAY,
{
ATTR_ENTITY_ID: "media_player.test_player",
ATTR_COMMAND: "favorite",
ATTR_SEARCH_TYPE: "item",
ATTR_SEARCH_STRING: FAKE_VALID_ITEM_ID,
ATTR_PLAYLIST_ACTION: "play",
},
blocking=True,
)
assert configured_player.async_load_playlist.call_count == 1
await hass.services.async_call(
DOMAIN,
SERVICE_PLAY,
{
ATTR_ENTITY_ID: "media_player.test_player",
ATTR_COMMAND: "favorite",
ATTR_SEARCH_TYPE: "item",
ATTR_SEARCH_STRING: FAKE_VALID_ITEM_ID,
ATTR_PLAYLIST_ACTION: "add",
},
blocking=True,
)
assert configured_player.async_load_playlist.call_count == 2
await hass.services.async_call(
DOMAIN,
SERVICE_PLAY,
{
ATTR_ENTITY_ID: "media_player.test_player",
ATTR_COMMAND: "favorite",
ATTR_SEARCH_TYPE: "item",
ATTR_SEARCH_STRING: FAKE_VALID_ITEM_ID,
ATTR_PLAYLIST_ACTION: "next",
},
blocking=True,
)
assert configured_player.async_load_playlist.call_count == 3
async def test_squeezebox_search_albums( async def test_squeezebox_search_albums(