from http import HTTPStatus from unittest.mock import AsyncMock import pytest from tests.helpers import read_json_from_file @pytest.mark.parametrize( "params,expected_status,expected_result", ( ({ "playlist_id": "B0BTSY1XBY:13923_us", "market": "us", "limit": 1 }, HTTPStatus.OK, {'count': 7, 'items': [{'added_date': '2023-03-04', 'artists': ['Brynn Cartelli'], 'current_position': 31, 'image_url': 'https://is2-ssl.mzstatic.com/image/thumb/Music126/v4/0e/dd/b2/0eddb243-e8a3-7ecc-c288-b3241ff3d644/075679701183.jpg/640x640bb.jpg', 'is_new': False, 'isrc': 'USAT22300086', 'name': 'Secondhand Smoke', 'position_change_date': None, 'previous_position': 31, 'track_id': '1668267417', 'trend': 0, 'update_date': '2023-03-08'}], 'next': '/gate-api/playlists/amazon/tracklist/?playlist_id=B0BTSY1XBY%3A13923_us&market=us&limit=1&offset=1', 'previous': None}), ({ "playlist_id": "B0BTSY1XBY:13923_us", "market": "us", "limit": 1, "search": "Sabrina", "isrc": "USUM72210695" }, HTTPStatus.OK, {'count': 1, 'items': [{'added_date': '2023-03-04', 'artists': ['Sabrina Carpenter'], 'current_position': 39, 'image_url': 'https://is3-ssl.mzstatic.com/image/thumb/Music112/v4/07/ef/6a/07ef6a69-ee75-ae04-f6a2-971be4b53828/22UMGIM63572.rgb.jpg/640x640bb.jpg', 'is_new': False, 'isrc': 'USUM72210695', 'name': 'because i liked a boy', 'position_change_date': None, 'previous_position': 39, 'track_id': '1631578530', 'trend': 0, 'update_date': '2023-03-08'}], 'next': None, 'previous': None}), ({ "playlist_id": "B0BTSY1XBY:13923_us", "market": "us", "limit": 1, "order_by": "current_position" }, HTTPStatus.OK, {'count': 7, 'items': [{'added_date': '2023-03-04', 'artists': ['Gracie Abrams'], 'current_position': 2, 'image_url': 'https://is5-ssl.mzstatic.com/image/thumb/Music113/v4/b8/82/fc/b882fcb4-359a-7207-9011-59ee228fdbbf/22UM1IM44923.rgb.jpg/640x640bb.jpg', 'is_new': False, 'isrc': 'USUG12202348', 'name': "I know it won't work", 'position_change_date': None, 'previous_position': 2, 'track_id': '1664288808', 'trend': 0, 'update_date': '2023-03-08'}], 'next': '/gate-api/playlists/amazon/tracklist/?playlist_id=B0BTSY1XBY%3A13923_us&market=us&order_by=current_position&limit=1&offset=1', 'previous': None}), ), ) async def test_get_amazon_tracklist(params, expected_status, expected_result, mocker, client, auth): track_data = read_json_from_file("clients/dsp_api/amazon_tracklist") image_artists_mapping = read_json_from_file("clients/vendor_api/amazon_tracks") get_data_mock = AsyncMock(return_value=(track_data, image_artists_mapping, [],)) mocker.patch('server.api.playlists.amazon.tracklist.get_tracks_data', side_effect=get_data_mock) response = await client.get("/api/playlists/amazon/tracklist/", params=params, headers=auth) assert response.status == expected_status result = await response.json() assert result == expected_result