Mark searchable Music Assistant media items with can_search (#183376)

This commit is contained in:
Paulus Schoutsen
2026-09-28 00:41:50 +02:00
committed by GitHub
parent b8cde62485
commit ef9fbb5c57
2 changed files with 46 additions and 0 deletions
@@ -109,6 +109,13 @@ SEARCHABLE_MASS_MEDIA_TYPES = [
# an artist holds nothing else we can search or browse
ARTIST_MASS_MEDIA_TYPES = [MASSMediaType.ALBUM, MASSMediaType.TRACK]
# the items that async_search_media can search inside
SEARCH_WITHIN_MASS_MEDIA_TYPES = (
MASSMediaType.ALBUM,
MASSMediaType.ARTIST,
MASSMediaType.PLAYLIST,
)
MEDIA_CONTENT_TYPE_FLAC = "audio/flac"
THUMB_SIZE = 200
SORT_NAME = "sort_name"
@@ -474,6 +481,7 @@ def build_item(
title=title,
can_play=True,
can_expand=can_expand,
can_search=item.media_type in SEARCH_WITHIN_MASS_MEDIA_TYPES,
thumbnail=img_url,
)
@@ -676,6 +676,44 @@ async def test_search_media_results_are_browsable(
)
async def test_search_media_results_can_search(
hass: HomeAssistant,
music_assistant_client: MagicMock,
) -> None:
"""Test that only artist, album and playlist results can be searched inside."""
await setup_integration_from_fixtures(hass, music_assistant_client)
mock = MockSearchResults(
["artist", "album", "track", "playlist", "radio", "podcast", "audiobook"]
)
for items in (
mock.artists,
mock.albums,
mock.tracks,
mock.playlists,
mock.radio,
mock.podcasts,
mock.audiobooks,
):
for item in items:
# The search inside check needs the real media type.
item.media_type = MASSMediaType(item.media_type.value)
with patch.object(music_assistant_client.music, "search", return_value=mock):
search_results = await async_search_media(
music_assistant_client, SearchMediaQuery(search_query="test")
)
assert len(search_results.result) == 35
assert {
item.media_content_id for item in search_results.result if item.can_search
} == {
f"library://{media_type}/{index}"
for media_type in ("artist", "album", "playlist")
for index in range(5)
}
async def test_search_media_websocket_from_library_listing(
hass: HomeAssistant,
music_assistant_client: MagicMock,