from delphi_api.utils import DateUtils from delphi_api.v3.constants import DSP_AMAZON, DSP_APPLE, DSP_SPOTIFY, SORT_DESC from delphi_api.v3.enums import ( AggByParam, GroupByParam, IncludeParamStreams, IncludeParamTracklists, SubsetParam, ) from tests.conftest import ( TEST_ARTIST_IDS, TEST_CHART_IDS, TEST_ISRCS, TEST_PLAYLIST_IDS, TEST_PRODUCT_IDS, TEST_TRACK_IDS, ) ARTISTS_FOLLOWERS_PATH = '/v3/artists//followers' ARTISTS_PATH = '/v3/artists' CHARTS_PATH = '/v3/charts' DSPS_PATH = '/v3/dsps' HEALTH_PATH = '/v3/health' PLAYLISTS_PATH = '/v3/playlists' POPULARITY_PATH = '/v3/popularity' PRODUCTS_PATH = '/v3/products' REGIONS_PATH = '/v3/regions' STATUS_DATA_PATH = '/v3/status/data' STREAMS_PATH = '/v3/streams' TRACK_POSITIONS_CHARTS_PATH = '/v3/track-positions/charts' TRACK_POSITIONS_PLAYLISTS_PATH = '/v3/track-positions/playlists' TRACKS_PATH = '/v3/tracks' START_DATE = '2020-01-01' END_DATE = '2020-01-07' DATE_RANGE = DateUtils.date_range(START_DATE, END_DATE) ARTIST_ID = TEST_ARTIST_IDS[0] CHART_GROUP = 'spotify_top200_daily' CHART_ID1 = TEST_CHART_IDS[0] CHART_ID2 = TEST_CHART_IDS[1] COUNTRY_DE = 'de' COUNTRY_US = 'us' COUNTRY_WORLDWIDE = 'worldwide' INT_VAL_100 = 100 ISRC1 = TEST_ISRCS[0] ISRC2 = TEST_ISRCS[1] PLAYLIST_ID1 = TEST_PLAYLIST_IDS[0] PLAYLIST_ID2 = TEST_PLAYLIST_IDS[1] PRODUCT_ID1 = TEST_PRODUCT_IDS[0] PRODUCT_ID2 = TEST_PRODUCT_IDS[1] REGION_CODE_US = 840 REGION_ID = COUNTRY_US STR_VAL = 'testval' TRACK_ID = TEST_TRACK_IDS[0] TRACK_ID2 = TEST_TRACK_IDS[1] MOCK_TOKEN_RESPONSE = { 'access_token': 'fake-access-token', 'expires_at': 1572029502, 'expires_in': 86400, 'token_type': 'Bearer' } PARAM_AGG_BY_ARTIST = {'agg_by': AggByParam.ARTIST.value} PARAM_AGG_BY_ISRC = {'agg_by': AggByParam.ISRC.value} PARAM_ARTIST_ID = {'artist_id': ARTIST_ID} PARAM_CHART_GROUP = {'chart_group': CHART_GROUP} PARAM_CHART_ID = {'chart_id': CHART_ID1} PARAM_CHART_ID_ARRAY = {'chart_id': [CHART_ID1, CHART_ID2]} PARAM_COUNTRY_CODE = {'country_code': COUNTRY_WORLDWIDE} PARAM_COUNTRY_CODE_ARRAY = {'country_code': [COUNTRY_US, COUNTRY_WORLDWIDE]} PARAM_DSP_AMAZON = {'dsp': DSP_AMAZON} PARAM_DSP_APPLE = {'dsp': DSP_APPLE} PARAM_DSP_ARRAY = {'dsp': [DSP_APPLE, DSP_SPOTIFY]} PARAM_DSP_ID_SPOTIFY = {'dsp_id': DSP_SPOTIFY} PARAM_DSP_SPOTIFY = {'dsp': DSP_SPOTIFY} PARAM_END_DATE = {'end_date': END_DATE} PARAM_GROUP_BY_DATE = {'group_by': GroupByParam.DATE.value} PARAM_GROUP_BY_ISRC = {'group_by': GroupByParam.ISRC.value} PARAM_INCLUDE_CHARTS = {'include': [IncludeParamTracklists.CHARTS.value]} PARAM_INCLUDE_DEMOGRAPHICS = {'include': IncludeParamStreams.DEMOGRAPHICS.value} PARAM_INCLUDE_PLAYLISTS = {'include': [IncludeParamTracklists.PLAYLISTS.value]} PARAM_INCLUDE_PLAYLISTS_STREAMS = { 'include': [IncludeParamTracklists.PLAYLISTS.value, IncludeParamTracklists.STREAMS.value] } PARAM_INCLUDE_STREAMS = {'include': [IncludeParamTracklists.STREAMS.value]} PARAM_ISRC1 = {'isrc': ISRC1} PARAM_ISRC_ARRAY = {'isrc': [ISRC1, ISRC2]} PARAM_LIMIT_1 = {'limit': 1} PARAM_LIMIT_10 = {'limit': 10} PARAM_LIMIT_100 = {'limit': 100} PARAM_LIMIT_1000 = {'limit': 1000} PARAM_OFFSET_1 = {'offset': 1} PARAM_PLAYLIST_ARRAY = {'playlist_id': [PLAYLIST_ID1, PLAYLIST_ID2]} PARAM_PLAYLIST_ID = {'playlist_id': PLAYLIST_ID1} PARAM_PRODUCT_ID = {'product_id': PRODUCT_ID1} PARAM_REGION_ID = {'region_id': REGION_ID} PARAM_SORT_BY_RELEASE_DATE = {'sort_by': 'release_date'} PARAM_SORT_BY_STREAMS = {'sort_by': 'streams'} PARAM_SORT_BY_RANK = {'sort_by': 'rank'} PARAM_SORT_ORDER_DESC = {'sort_order': SORT_DESC} PARAM_START_DATE = {'start_date': START_DATE} PARAM_SUBSET_PLAYLISTS = {'subset': SubsetParam.PLAYLISTS.value} PARAM_TRACK_ID = {'track_id': TRACK_ID} PARAM_TRACK_ID_ARRAY = {'track_id': [TRACK_ID, TRACK_ID2]} PARAMS_START_END_ISRC = {**PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC1} PARAMS_START_END_PLAYLIST_ARRAY = {**PARAM_START_DATE, **PARAM_END_DATE, **PARAM_PLAYLIST_ARRAY} PARAMS_START_END_ISRC_ARRAY = {**PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY} #: Format is { route: dict of query params } ARTISTS_ROUTES = [ { 'route': ARTISTS_PATH, 'params': {**PARAM_TRACK_ID, **PARAM_LIMIT_10} }, { 'route': ARTISTS_PATH, 'params': {**PARAM_PRODUCT_ID, **PARAM_LIMIT_10} }, { 'route': ARTISTS_PATH, 'params': {**PARAM_ISRC1, **PARAM_LIMIT_10} }, { 'route': ARTISTS_PATH, 'params': {**PARAM_TRACK_ID, **PARAM_PRODUCT_ID, **PARAM_LIMIT_10} }, { 'route': ARTISTS_PATH, 'params': {**PARAM_TRACK_ID, **PARAM_PRODUCT_ID, **PARAM_ISRC1, **PARAM_LIMIT_10} }, { 'route': ARTISTS_PATH, 'params': {**PARAM_TRACK_ID, **PARAM_ISRC1, **PARAM_LIMIT_10} }, { 'route': f'{ARTISTS_PATH}/', 'params': PARAM_ARTIST_ID }, ] ARTISTS_FOLLOWERS_ROUTES = [ { 'route': ARTISTS_FOLLOWERS_PATH, 'params': { **PARAM_ARTIST_ID, **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_LIMIT_10, } }, { 'route': ARTISTS_FOLLOWERS_PATH, 'params': { **PARAM_ARTIST_ID, **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_LIMIT_10, **PARAM_GROUP_BY_DATE, } }, ] TRACKS_ROUTES = [ { 'route': TRACKS_PATH, 'params': {**PARAM_ISRC_ARRAY} }, { 'route': TRACKS_PATH, 'params': {**PARAM_PRODUCT_ID} }, { 'route': TRACKS_PATH, 'params': {**PARAM_ARTIST_ID} }, { 'route': TRACKS_PATH, 'params': {**PARAM_ARTIST_ID, **PARAM_SORT_BY_RELEASE_DATE} }, { 'route': TRACKS_PATH, 'params': {**PARAM_ARTIST_ID, **PARAM_SORT_BY_RELEASE_DATE, **PARAM_GROUP_BY_ISRC} }, { 'route': TRACKS_PATH, 'params': {**PARAM_ARTIST_ID, **PARAM_GROUP_BY_ISRC} }, { 'route': TRACKS_PATH, 'params': {**PARAM_ARTIST_ID, **PARAM_PRODUCT_ID} }, { 'route': TRACKS_PATH, 'params': {**PARAM_ARTIST_ID, **PARAM_PRODUCT_ID, **PARAM_ISRC1} }, { 'route': TRACKS_PATH, 'params': {**PARAM_ARTIST_ID, **PARAM_ISRC1} }, { 'route': f'{TRACKS_PATH}/', 'params': PARAM_TRACK_ID }, ] STREAMS_ROUTES = [ { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_DSP_AMAZON, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ARTIST_ID, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ARTIST_ID, **PARAM_AGG_BY_ISRC, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_GROUP_BY_DATE } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_COUNTRY_CODE_ARRAY, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_PLAYLIST_ARRAY, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_COUNTRY_CODE_ARRAY, **PARAM_ARTIST_ID, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_DSP_ARRAY, **PARAM_ARTIST_ID, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_TRACK_ID_ARRAY, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_TRACK_ID, **PARAM_INCLUDE_DEMOGRAPHICS, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_TRACK_ID, **PARAM_SORT_BY_STREAMS, **PARAM_SORT_ORDER_DESC, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_SUBSET_PLAYLISTS, **PARAM_COUNTRY_CODE, **PARAM_SORT_BY_STREAMS, **PARAM_SORT_ORDER_DESC, } }, { 'route': STREAMS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_SUBSET_PLAYLISTS, **PARAM_COUNTRY_CODE, **PARAM_GROUP_BY_DATE, **PARAM_SORT_BY_STREAMS, **PARAM_SORT_ORDER_DESC, } }, ] REGIONS_ROUTES = [ { 'route': REGIONS_PATH, 'params': { **PARAM_LIMIT_10, } }, { 'route': f'{REGIONS_PATH}/', 'params': { **PARAM_REGION_ID, } }, ] PRODUCTS_ROUTES = [ { 'route': PRODUCTS_PATH, 'params': { **PARAM_ARTIST_ID, **PARAM_LIMIT_10, } }, { 'route': f'{PRODUCTS_PATH}/', 'params': { **PARAM_PRODUCT_ID, } }, ] POPULARITY_ROUTES = [ { 'route': POPULARITY_PATH, 'params': { **PARAM_ARTIST_ID, **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_LIMIT_10, } }, ] PLAYLISTS_ROUTES = [ { 'route': PLAYLISTS_PATH, 'params': { **PARAM_DSP_SPOTIFY, **PARAM_LIMIT_10, } }, { 'route': f'{PLAYLISTS_PATH}/', 'params': { **PARAM_PLAYLIST_ID, } }, ] CHARTS_ROUTES = [ { 'route': CHARTS_PATH, 'params': { **PARAM_DSP_SPOTIFY, **PARAM_LIMIT_10, } }, { 'route': CHARTS_PATH, 'params': { **PARAM_DSP_SPOTIFY, **PARAM_CHART_GROUP, **PARAM_LIMIT_10, } }, { 'route': CHARTS_PATH, 'params': { **PARAM_CHART_GROUP, **PARAM_LIMIT_10, **PARAM_SORT_BY_RANK, **PARAM_SORT_ORDER_DESC } }, { 'route': f'{CHARTS_PATH}/', 'params': { **PARAM_CHART_ID, } }, ] TRACK_POSITIONS_CHARTS_ROUTES = [ { 'route': TRACK_POSITIONS_CHARTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_CHART_ID, **PARAM_ISRC_ARRAY, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_CHARTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_CHART_ID, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_CHARTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_CHART_ID, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_CHARTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ARTIST_ID, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_CHARTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ARTIST_ID, **PARAM_CHART_ID, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_CHARTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ARTIST_ID, **PARAM_CHART_ID, **PARAM_INCLUDE_CHARTS, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_CHARTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_INCLUDE_CHARTS, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_CHARTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_LIMIT_10, } }, ] TRACK_POSITIONS_PLAYLISTS_ROUTES = [ { 'route': TRACK_POSITIONS_PLAYLISTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_PLAYLIST_ID, **PARAM_ISRC_ARRAY, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_PLAYLISTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_PLAYLIST_ID, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_PLAYLISTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_PLAYLIST_ID, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_PLAYLISTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ARTIST_ID, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_PLAYLISTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ARTIST_ID, **PARAM_PLAYLIST_ID, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_PLAYLISTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ARTIST_ID, **PARAM_PLAYLIST_ID, **PARAM_INCLUDE_PLAYLISTS, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_PLAYLISTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_INCLUDE_PLAYLISTS, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_PLAYLISTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_INCLUDE_PLAYLISTS_STREAMS, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_PLAYLISTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_INCLUDE_PLAYLISTS_STREAMS, **PARAM_PLAYLIST_ID, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_PLAYLISTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_INCLUDE_STREAMS, **PARAM_LIMIT_10, } }, { 'route': TRACK_POSITIONS_PLAYLISTS_PATH, 'params': { **PARAM_START_DATE, **PARAM_END_DATE, **PARAM_ISRC_ARRAY, **PARAM_LIMIT_10, } }, ] STATUS_ROUTES = [ { 'route': STATUS_DATA_PATH, 'params': {} }, ] HEALTH_ROUTES = [ { 'route': HEALTH_PATH, 'params': {} }, ] DSPS_ROUTES = [ { 'route': DSPS_PATH, 'params': { **PARAM_LIMIT_10, } }, { 'route': f'{DSPS_PATH}/', 'params': { **PARAM_DSP_ID_SPOTIFY } }, ]