from http import HTTPStatus from unittest.mock import AsyncMock import pytest def get_track(i): isrc = f"GB{i}" if i % 2 == 0 else f"US{i}" return { "isrc": isrc, "track": { "isrc": isrc, "release_date": "2020-07-23" if i % 3 == 0 else "2023-01-15", } } @pytest.mark.freeze_time('2023-02-09') async def test_get_amazon_tracklist_graph(mocker, client, auth): params = { "playlist_id": "B0BTSY1XBY:13923_us", "market": "us" } expected_result = {'frontline_tracks': 26, 'local_tracks': 20, 'tracks_num': 40} track_data = [get_track(i) for i in range(40)] get_data_mock = AsyncMock(return_value=({"items": track_data})) mocker.patch('server.api.playlists.amazon.tracklistgraph.get_tracks', side_effect=get_data_mock) response = await client.get("/api/playlists/amazon/tracklist-graph/", params=params, headers=auth) assert response.status == HTTPStatus.OK result = await response.json() assert result == expected_result