"""Tests for Spotify search logic.""" import pytest from participant.logic.service import apple_music @pytest.mark.parametrize( ('return_value', 'expected_value'), [ ( { 'results': { 'artists': { 'random': 'attribute', 'data': [ { 'id': '78011850', 'type': 'artists', 'href': '/v1/catalog/us/artists/78011850', 'attributes': { 'id': '78011850', 'name': 'deadmau5', 'genreNames': ['Dance'], 'url': 'https://music.apple.com/us/artist/' 'deadmau5/78011850', }, } ], } } }, [ { 'identifier': '78011850', 'name': 'deadmau5', 'genres': ['Dance'], 'url': 'https://music.apple.com/us/artist/deadmau5/78011850', } ], ), ( {'results': {}}, [], ), ], ) def test_artist_search(mocker, return_value, expected_value): """Test artist search.""" search_artist_mock = mocker.patch( 'participant.models.service.apple_music.search_artist', return_value=return_value, ) query, limit, offset, localization = 'Danger Mouse', 10, 0, 'fr' response = apple_music.artist_search(query, limit, offset, localization) search_artist_mock.assert_called_once_with(query, limit, offset, localization) assert response.message == expected_value @pytest.mark.parametrize( ('return_value', 'expected_value'), [ ( { 'data': [ { 'id': '78011850', 'type': 'artists', 'href': '/v1/catalog/us/artists/78011850', 'attributes': { 'id': '78011850', 'name': 'deadmau5', 'genreNames': ['Dance'], 'url': 'https://music.apple.com/us/artist/' 'deadmau5/78011850', }, } ], }, { 'identifier': '78011850', 'name': 'deadmau5', 'genres': ['Dance'], 'url': 'https://music.apple.com/us/artist/deadmau5/78011850', }, ), ], ) def test_get_artist_by_id(mocker, return_value, expected_value): """Test get artist by ID.""" get_artist_by_id_mock = mocker.patch( 'participant.models.service.apple_music.get_artist_by_id', return_value=return_value, ) artist_id = 'ARTIST_ID' response = apple_music.get_artist_by_id(artist_id) get_artist_by_id_mock.assert_called_once_with(artist_id) assert response.message == expected_value def test_artist_search_error(mocker): """Test artist search error response is gracefully handled by the formatter.""" mocker.patch( 'participant.models.service.apple_music.search_artist', return_value=None, ) query, limit, offset, localization = 'Danger Mouse', 10, 0, 'fr' result = apple_music.artist_search(query, limit, offset, localization) assert result.message == [] def test_get_artist_by_id_error(mocker): """Test get artist by ID error response is gracefully handled by the formatter.""" mocker.patch( 'participant.models.service.apple_music.get_artist_by_id', return_value=None, ) artist_id = 'ARTIST_ID' result = apple_music.get_artist_by_id(artist_id) assert result.message == {}