from http import HTTPStatus as http_status from unittest.mock import AsyncMock import pytest from server.client.clients.dsp_api import DspApiClient from tests.helpers import read_json_from_file @pytest.mark.freeze_time('2023-02-09') async def test_get_amazon_current_playlists(mocker, client, auth): delphi_amazon_response = read_json_from_file("clients/dsp_api/amazon_current_playlists") amazon_async_mock = AsyncMock(return_value=delphi_amazon_response) mocker.patch.object(DspApiClient, "get_track_positions_playlists", side_effect=amazon_async_mock) async def get_streams(url: str, *args, **kwargs): if kwargs.get("body", {}).get("isrc"): return read_json_from_file("clients/dsp_api/track_playlists_streams") return read_json_from_file("clients/dsp_api/playlists_streams") mocker.patch.object(DspApiClient, "_send_request", side_effect=get_streams) params = { "isrc": "USSM12209777", "market": "de", "streams_type": "priority", "keep_zero_streams": "false", "limit": 2, "offset": 0, } expected_response = { "count": 1, "items": [ {"current_position": 6, "trend": 0, "is_new": False, "updated_date": "2023-02-08", "image_url": "https://m.media-amazon.com/images/I/7150w5+PkDL.jpg", "id": "B08997DLGC:8120_ca", "current_streams": 215, "prev_streams": 100, "position_change_date": "2023-02-08", "added_date": "2023-02-07", "country_code": "de", "name": "REDISCOVER Miley Cyrus"} ], "next": None, "streams_type": "track", "previous": None } response = await client.get("/api/playlists/amazon/by-track/", params=params, headers=auth) assert response.status == http_status.OK response = await response.json() assert response == expected_response