import json import unittest from argparse import Namespace import allure import pytest from assertpy import assert_that from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig from app.api_client import ApiClient from app.mysql_db_client_custom import MySqlClient from app.src.pages.amazon_playlist_page import AmazonPlaylistPage 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 AmazonPlaylistPageTest(unittest.TestCase): playlist35 = json.loads(json.dumps(AppConfig.get("playlist35")), object_hook=lambda d: Namespace(**d)) @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.ap = AmazonPlaylistPage(self.driver) self.tp = TrackPage(self.driver) self.api_client = ApiClient() self.sql_client = MySqlClient() self.ts = TestStatus(self.driver) @allure.story("AP-8424") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-8027][Amazon Playlist] Position Trend verification") @allure.description("TC verifies position trend on the Amazon Playlist page.") def test_amazon_position_trend_verification(self): self.loginPage.login_with_worker() self.ap.open_amazon_playlist_page(self.playlist35.amazon_id) # step 1-4, 6 self.verify_position_trend() self.ap.sort_table_by_column(self.ap.TL_COLUMN_POSITION_TREND) self.verify_position_trend() self.ap.sort_table_by_column(self.ap.TL_COLUMN_POSITION_TREND) self.verify_position_trend() @allure.step("Amazon playlist page - verify position trend") def verify_position_trend(self, position=1): market = self.tp.parameter_from_url(self.ap.hd_filter_market) playlist_id = self.ap.get_url().split("/")[-1].split("?")[0] track_id = self.ap.tl_get_song_ids()[0][position - 1] track_real_position = self.ap.tl_get_song_ids()[1][position - 1] trend_ui = self.ap.tl_get_column_values(self.ap.TL_COLUMN_POSITION_TREND)[track_real_position - 1] isrc_api = self.api_client.get_isrc_by_apple_id(track_id, market)["data"][0]["attributes"]["isrc"] date_latest = self.api_client.get_latest_date_all()["amazon"] trend_api_resp = self.api_client.get_amazon_tracklist_start_end_id_market(market=market, id=playlist_id, start=date_latest, end=date_latest)["items"] trend_api = None for i in trend_api_resp: if i["isrc"] == isrc_api and i["playlist_id"] == f"{playlist_id}_{market}": trend_api = abs(i["trend_change_14_days"]) self.ap.log.info(f"trend api: {trend_api}, trend ui: {trend_ui}") assert_that(trend_ui).is_equal_to(trend_api) # NOT AUTOMATED STEPS - 5, 7-8