from typing import List from faker import Faker from server.utils.mappers.core.setters import setter from tests.api.playlists.v1.responses.base.common import parse_include_params_to_get_with, get_params from tests.api.playlists.v1.responses.base.public_track_positions_playlists import \ get_delphi_public_track_positions_playlists_response, get_delphi_track_positions_playlists_response from tests.api.playlists.v1.responses.base.public_track_positions_previous_playlists import \ get_delphi_public_track_positions_previous_playlists_response from tests.api.playlists.v1.responses.constants import SpecificItem, SPECIFIC_ITEM_MAPPING fake = Faker() def get_delphi_playlists_api_response( url: str = None, items_count: int = 1, specify: List[SpecificItem] = None, **kwargs ): result = { "items": [], "meta": { "owner_categories": [] } } if specify is not None: items_count = 1 kwargs["params"].update({"country_code": ["us"]}) get_with = parse_include_params_to_get_with(**kwargs) params = get_params(**kwargs) if url == "api/delphi/public/track-positions/playlists": result = get_delphi_public_track_positions_playlists_response(items_count=items_count, **params, **get_with) elif url == "api/delphi/public/track-positions/previous/playlists": return get_delphi_public_track_positions_previous_playlists_response( items_count=items_count, **params, **get_with ) elif url == "api/delphi/track-positions/playlists": return get_delphi_track_positions_playlists_response( items_count=items_count, amazon_playlist_id=kwargs.get("amazon_playlist_id"), **params, **get_with ) if specify: for specific_item in specify: for path, value in SPECIFIC_ITEM_MAPPING[specific_item].items(): setter(result["items"][0], key=path, value=value) return result