mirror of
https://github.com/home-assistant/core.git
synced 2026-10-06 14:29:21 -04:00
Mark searchable Music Assistant media items with can_search (#183376)
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user