import logging import pandas import pytest from jsonbender import F as ApplyFunction from jsonbender import K from jsonbender import S as GetField from parameterized import parameterized from ui_automation_framework.utils import logger as cl import app.src.tests.decomission.api_init as api_init from app.src.tests.decomission.compare_helper import format_color, generate_provider, get_field_with_diff, get_field_with_diff_custom_date, merge_arrays, transform_json API = api_init.APIOverride() log = cl.Logger(logging.DEBUG) apollo_to_delphi_keys = { "playlist_id": (GetField("tracklistCountryCode") + K("_apple_") + GetField("id")), "tracks_last_added": GetField("tracksLastAdded") >> ApplyFunction(lambda val: 0 if val is None else val.split("T")[0]), "appleMusicUpdate": GetField("appleMusicUpdate") >> ApplyFunction(lambda val: 0 if val is None else val.split("T")[0]), # shown in the Info icon next to Tracklist "latestUpdate": GetField("latestUpdate") >> ApplyFunction(lambda val: 0 if val is None else val.split("T")[0]), # shown in the Playlist header } delphi_to_delphi_keys = { "playlist_id": (GetField("country_code") + K("_") + GetField("playlist_id")), "tracks_last_added": GetField("dsp_update_date_time") >> ApplyFunction(lambda val: 0 if val is None else val.split("T")[0]), "appleMusicUpdate": GetField("playlist_updated_at_date_time") >> ApplyFunction(lambda val: 0 if val is None else val.split("T")[0]), "latestUpdate": GetField("dsp_sync_date_time") >> ApplyFunction(lambda val: 0 if val is None else str(max(val)).split("T")[0]), } current_playlist_apollo_portal = "/applemusic/playlists/{0}?country={1}" current_playlist_delphi = "/v3/public/track-positions/playlists/dates?playlist_id=apple_{0}&country_code={1}&sort_by=dsp_update_date_time&sort_order=desc" @parameterized.expand( [ # ('pl.2754a2d6e0084e2b8106fcd35fef6492', 'us'), # ('pl.132b9a231cbf464086b4f838b2726f94', 'us'), # ('37i9dQZF1DX03VbhoH7arm', 'global'), # ('USSM12200612', ''), # ('KRA402200020', ''), # ('GBBKS1200164', '') # ('pl.b7ae3e0a28e84c5c96c4284b6a6c70af', 'ca'), # ('pl.f4d106fed2bd41149aaacabb233eb5eb', 'se'), # ('pl.b7ae3e0a28e84c5c96c4284b6a6c70af', 'es'), # ('pl.f4d106fed2bd41149aaacabb233eb5eb', 'us'), ("pl.9a745aff88074cb9a13156b1dacc16c5", "us"), ] ) @pytest.mark.skip() def test_playlist_meta_data_dates(playlist_id, market): apollo_response = API.get_apollo_response(current_playlist_apollo_portal.format(playlist_id, market)) delphi_response = API.get_delphi_response(current_playlist_delphi.format(playlist_id, market)) apollo_transformed_response = transform_json(apollo_to_delphi_keys, [apollo_response]) delphi_transformed_response = transform_json(delphi_to_delphi_keys, delphi_response["items"]) aggregated_matrix = merge_arrays(apollo_transformed_response, delphi_transformed_response, "playlist_id") index_for_all_fields = list(range(1, len(generate_provider(aggregated_matrix)) + 1)) subset_to_mark = range(3, len(aggregated_matrix) * 5, 5) pandas.DataFrame( { "provider": generate_provider(aggregated_matrix), "playlist_id": get_field_with_diff("playlist_id", aggregated_matrix), "tracks_last_added": get_field_with_diff("tracks_last_added", aggregated_matrix), "appleMusicUpdate": get_field_with_diff("appleMusicUpdate", aggregated_matrix), "latestUpdate": get_field_with_diff_custom_date("latestUpdate", aggregated_matrix), }, index=index_for_all_fields, ).style.apply(format_color, subset=(subset_to_mark, slice(None))).to_excel(f"decomission/apple_playlist_metadata_dates/{playlist_id}_{market}_apple_playlist_metadata_dates.xlsx")