import random from datetime import datetime, timedelta import allure import pytest from assertpy import assert_that from app.src.api.facade import ApiClient from app.src.helpers.api_data_provider import ApiDataProvider api = ApiClient() api.authorize() data_provider = ApiDataProvider(api) data = data_provider.get_sony_tracks_isrcs(market="us", ignore_response_attaching=True) isrcs = data[0][:10] random_isrc = random.choice(isrcs) start_date, end_date = data_provider.get_track_start_end_dates(random_isrc, 6, ignore_response_attaching=True) def get_current_spotify_playlists(): playlists = api.apollo.get_spotify_playlists_data_go( isrc=random_isrc, streams_market="_gl", start_date=start_date, end_date=end_date, streams_type="priority", keep_zero_streams=True, offset=0, limit=2000, order_by=["-current_streams", "-id"], ignore_response_attaching=True)["body"]["items"] return {pl["id"]: pl["updated_date"] for pl in playlists if pl["personalized"]} def get_previous_spotify_playlists(): playlists = api.apollo.get_v3_spotify_track_previous_playlists( f"isrc={random_isrc}", "limit=5000", "exclude_current_playlists=true", "order_by=-removed_date", "order_by=id", "market=_gl", ignore_response_attaching=True)["body"]["items"] return {pl["id"]: pl["updated_date"] for pl in playlists if pl["personalized"]} def get_current_apple_playlists(): market = "us" playlists = api.apollo.get_apple_playlists_data_go( isrc=random_isrc, market=market, start_date=start_date, end_date=end_date, streams_type="priority", keep_zero_streams=True, offset=0, limit=100, order_by=["-current_streams", "-id"], ignore_response_attaching=True)["body"]["items"] return {pl["id"]: pl["updated_date"] for pl in playlists} def get_previous_apple_playlists(): playlists = api.apollo.get_v3_apple_music_track_previous_playlists( f"isrc={random_isrc}", "&limit=5000", "exclude_current_playlists=true", "order_by=-removed_date", "order_by=id", "market=us", ignore_response_attaching=True)["body"]["items"] return {pl["id"]: pl["updated_date"] for pl in playlists} def date_and_day_before(input_date): meta_playlist_data_updated_date = input_date date_obj = datetime.strptime(meta_playlist_data_updated_date, '%Y-%m-%d').date() day_before = date_obj - timedelta(days=1) meta_playlist_data_day_before = day_before.strftime('%Y-%m-%d') return meta_playlist_data_updated_date, meta_playlist_data_day_before @allure.severity(allure.severity_level.NORMAL) @allure.title("Compare updated dates for Spotify current playlists") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-11227") @pytest.mark.parametrize("playlist_id, playlist_updated_date", get_current_spotify_playlists().items()) def test_spotify_current_personalized_playlists(playlist_id, playlist_updated_date): meta_playlist_data = api.gate.get_playlists_spotify(f"id={playlist_id}")["body"] meta_playlist_data_updated_date, meta_playlist_data_day_before = date_and_day_before(meta_playlist_data[0]["updated_date"]) assert_that(playlist_updated_date).is_in(meta_playlist_data_updated_date, meta_playlist_data_day_before) @allure.severity(allure.severity_level.NORMAL) @allure.title("Compare updated dates for Spotify previous playlists") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-11227") @pytest.mark.parametrize("playlist_id, playlist_updated_date", get_previous_spotify_playlists().items()) def test_spotify_previous_personalized_playlists(playlist_id, playlist_updated_date): meta_playlist_data = api.gate.get_playlists_spotify(f"id={playlist_id}")["body"] meta_playlist_data_updated_date, meta_playlist_data_day_before = date_and_day_before(meta_playlist_data[0]["updated_date"]) assert_that(playlist_updated_date).is_in(meta_playlist_data_updated_date, meta_playlist_data_day_before) @allure.severity(allure.severity_level.NORMAL) @allure.title("Compare updated dates for Apple current playlists") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-11227") @pytest.mark.parametrize("playlist_id, playlist_updated_date", get_current_apple_playlists().items()) def test_apple_current_playlists(playlist_id, playlist_updated_date): meta_playlist_data = api.gate.get_playlists_apple(f"id={playlist_id}", "market=us")["body"] meta_playlist_data_updated_date, meta_playlist_data_day_before = date_and_day_before(meta_playlist_data[0]["updated_date"]) assert_that(playlist_updated_date).is_in(meta_playlist_data_updated_date, meta_playlist_data_day_before) @allure.severity(allure.severity_level.NORMAL) @allure.title("Compare updated dates for Apple previous playlists") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-11227") @pytest.mark.parametrize("playlist_id, playlist_updated_date", get_previous_apple_playlists().items()) def test_apple_previous_playlists(playlist_id, playlist_updated_date): meta_playlist_data = api.gate.get_playlists_apple(f"id={playlist_id}", "market=us")["body"] meta_playlist_data_updated_date, meta_playlist_data_day_before = date_and_day_before(meta_playlist_data[0]["updated_date"]) assert_that(playlist_updated_date).is_in(meta_playlist_data_updated_date, meta_playlist_data_day_before)