import unittest import allure import pytest from assertpy import assert_that from ui_automation_framework.core import TestStatus from app.api_client import ApiClient from app.mysql_db_client_custom import MySqlClient from app.src.pages.chart_digest import ChartDigestPage from app.src.pages.global_track_priorities_page import GlobalTrackPrioritiesPage from app.src.pages.gtp_cpot_popup import GTPCPOTPopup from app.src.pages.gtp_hh_modal import GTPHotHitsModal from app.src.pages.left_navigation_panel import LeftNavigationPanel from app.src.pages.login_page import LoginPage from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class GlobalTrackPrioritiesPageTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.chartDigestPage = ChartDigestPage(self.driver) self.gtp = GlobalTrackPrioritiesPage(self.driver) self.gtp_hhm = GTPHotHitsModal(self.driver) self.lnp = LeftNavigationPanel(self.driver) self.chart_digest = ChartDigestPage(self.driver) self.trackPage = TrackPage(self.driver) self.gtp_cpot_popup = GTPCPOTPopup(self.driver) self.api_client = ApiClient() self.sql_client = MySqlClient() self.ts = TestStatus(self.driver) @allure.story("AP-4994") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4169][GTP -> Content Table] Chart Position and Position Trend verification STEPS 1-6") @allure.description("""TC verifies Content table Chart Position and Position Trend columns logic under Global Track Priorities page. STEPS 1-6""") def test_chart_position_and_trend_steps_1_6(self): self.loginPage.login_with_worker() url_default = self.loginPage.get_url() self.gtp.open_current_url_with_param("global-track-priorities?&hd_filter_market=_gl") api_resp_dates = self.api_client.get_tracks_gtp() chart_date = api_resp_dates["chart_date"] # step 1-2 self.gtp_hhm.verify_chart_position_column_header(chart_date) # step 3 tab_data = self.gtp.get_all_from_table() first_track = list(tab_data.keys())[0] track_id_ui = tab_data[first_track]["track_id"] isrc = self.api_client.get_isrc_by_spotify_id(market="_gl", id=track_id_ui)["external_ids"]["isrc"] position_ui = tab_data[first_track]["chart_position"] track_positions_api = self.api_client.get_gtp_charts(isrcs=[isrc], market="_gl", end_date=chart_date)["data"] position_api = [track_positions_api[0]["positions"][d]["position"] for d in range(len(track_positions_api[0]["positions"])) if track_positions_api[0]["positions"][d]["date"] == chart_date] assert_that(position_ui).is_equal_to("".join(map(str, position_api))) # step 4 us_past_date = "2020-11-30" self.gtp.open_url(f"{url_default}global-track-priorities?hd_date={us_past_date}&hd_filter_market=us") tab_data_past_us = self.gtp.get_all_from_table() self.gtp_hhm.verify_chart_position_column_header(us_past_date) assert_that(tab_data).is_not_equal_to(tab_data_past_us) # step 5 first_track = list(tab_data_past_us.keys())[0] track_id_ui = tab_data_past_us[first_track]["track_id"] isrc = self.api_client.get_isrc_by_spotify_id(market="us", id=track_id_ui)["external_ids"]["isrc"] position_ui = tab_data_past_us[first_track]["chart_position"] track_positions_api = self.api_client.get_gtp_charts(isrcs=[isrc], market="us", end_date=us_past_date)["data"] position_api = [track_positions_api[0]["positions"][d]["position"] for d in range(len(track_positions_api[0]["positions"])) if track_positions_api[0]["positions"][d]["date"] == us_past_date] assert_that(position_ui).is_equal_to("".join(map(str, position_api))) # step 6 self.gtp.open_cpot_from_table() self.gtp_cpot_popup.is_modal_opened() @allure.story("AP-4994") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4169][GTP -> Content Table] Chart Position and Position Trend verification STEPS 7-15") @allure.description("""TC verifies Content table Chart Position and Position Trend columns logic under Global Track Priorities page. STEPS 7-15""") def test_chart_position_and_trend_steps_7_15(self): self.loginPage.login_with_worker() us_past_date = "2020-12-14" us_week_before = "2020-12-07" track_1 = "Mood (feat. iann dior)" track_2 = "Coco (feat. DaBaby)" track_3 = "Sweet Melody" track_4 = "Life Goes On" track_5 = "Golden" track_6 = "WITHOUT YOU" track_7 = "Oh Santa! (feat. Ariana Grande & Jennifer Hudson)" track_8 = "DÁKITI" self.gtp.open_current_url_with_param(f"global-track-priorities?hd_date={us_past_date}&hd_filter_market=us") tab_data_op_14_12 = self.gtp.get_all_from_table() # step 7 self.gtp.verify_chart_icon(tab_data_op_14_12[track_1]["index"]) assert_that(tab_data_op_14_12[track_1]["chart_position"]).is_equal_to("29") # step 11 self.gtp.verify_blue_dot_trend(tab_data_op_14_12[track_5]["index"]) assert_that(tab_data_op_14_12[track_5]["trend"]).is_equal_to("") # step 8 self.gtp.open_tab(self.gtp.TAB_BU) tab_data_bu_14_12 = self.gtp.get_all_from_table(self.gtp.TAB_BU) self.gtp.verify_chart_icon(tab_data_bu_14_12[track_2]["index"]) assert_that(tab_data_bu_14_12[track_2]["chart_position"]).is_equal_to("–") # step 9 self.gtp.verify_chart_icon(tab_data_bu_14_12[track_3]["index"], False) assert_that(tab_data_bu_14_12[track_3]["chart_position"]).is_equal_to("–") # step 10 self.gtp.open_tab(self.gtp.TAB_OH) tab_data_oh_14_12 = self.gtp.get_all_from_table(self.gtp.TAB_OH) assert_that(tab_data_oh_14_12[track_4]["trend"]).is_equal_to("") # step 12 self.trackPage.change_param_in_url_new(self.gtp.hd_date, us_week_before) tab_data_op_07_12 = self.gtp.get_all_from_table() assert_that(track_5).is_not_in(list(tab_data_op_07_12.keys())) # step 13 assert_that(tab_data_op_14_12[track_6]["trend"]).is_equal_to("10") # step 14 assert_that(tab_data_op_14_12[track_7]["trend"]).is_equal_to("25") # step 15 assert_that(tab_data_oh_14_12[track_8]["trend"]).is_equal_to("0")