music-assistant-server

975 BPY
test_recommendation_contract.py
975 B27 lines • python
1"""Provider-side regression tests for the recommendation result contract."""
2
3from __future__ import annotations
4
5from unittest.mock import AsyncMock, Mock
6
7import pytest
8from music_assistant_models.media_items import UniqueList
9
10from music_assistant.providers.zvuk_music.provider import ZvukMusicProvider
11
12
13@pytest.mark.asyncio
14@pytest.mark.parametrize("item_id", ["for_you", "editorial"])
15async def test_successful_recommendation_rows_return_unique_lists(item_id: str) -> None:
16    """Successful recommendation rows preserve the ``UniqueList`` contract."""
17    provider = Mock(spec=ZvukMusicProvider)
18    provider._get_for_you_playlists = AsyncMock(return_value=[])
19    provider._get_editorial_playlists = AsyncMock(return_value=[])
20    provider.get_recommendation_items = ZvukMusicProvider.get_recommendation_items.__get__(
21        provider, ZvukMusicProvider
22    )
23
24    result = await provider.get_recommendation_items(item_id)
25
26    assert isinstance(result, UniqueList)
27