import json import random 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.apple_playlist_page import ApplePlaylistPage 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 ApplePlaylistPageTest(unittest.TestCase): playlist9 = json.loads(json.dumps(AppConfig.get("playlist9")), object_hook=lambda d: Namespace(**d)) us = json.loads(json.dumps(AppConfig.get("market")["us"]), object_hook=lambda d: Namespace(**d)) @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.ap = ApplePlaylistPage(self.driver) self.tp = TrackPage(self.driver) self.api_client = ApiClient() self.sql_client = MySqlClient() self.ts = TestStatus(self.driver) @allure.story("AP-3931") @allure.severity(allure.severity_level.NORMAL) @allure.title("""Apple Playlist Position Trend verification""") @allure.description("""TC verifies the position trend of the apple playlist.""") def test_position_trend(self): self.loginPage.login_with_worker() self.ap.open_apple_playlist_page_with_market(self.playlist9.apple_id, self.us.market) # step 1 tracks_id = self.ap.get_tracks_id_from_tracklist() trends_ui = self.ap.tl_get_column_values(self.ap.TL_COLUMN_POSITION_TREND) trends_api = self.ap.get_position_trends_by_tracks_id(market=self.us.market, playlist_id=self.playlist9.apple_id, tracks_id=tracks_id[0]) assert_that(trends_ui[0]).is_equal_to(trends_api[0]) # step 2, 5 track_number = random.choice([0, 1, 2, 3, 4]) self.ap.tl_sort_by_column(self.ap.TL_COLUMN_POSITION_TREND) tracks_id = self.ap.get_tracks_id_from_tracklist() trends_ui = self.ap.tl_get_column_values(self.ap.TL_COLUMN_POSITION_TREND)[track_number] trends_api = self.ap.get_position_trends_by_tracks_id(market=self.us.market, playlist_id=self.playlist9.apple_id, tracks_id=tracks_id[track_number]) assert_that(trends_ui).is_equal_to(trends_api[0]) # step 3, 4 self.ap.tl_sort_by_column(self.ap.TL_COLUMN_POSITION_TREND) tracks_id = self.ap.get_tracks_id_from_tracklist() trends_ui = self.ap.tl_get_column_values(self.ap.TL_COLUMN_POSITION_TREND)[track_number] trends_api = self.ap.get_position_trends_by_tracks_id(market=self.us.market, playlist_id=self.playlist9.apple_id, tracks_id=tracks_id[track_number]) assert_that(trends_ui).is_equal_to(trends_api[0]) # step 6 self.ap.change_market(AppConfig.get("market")["australia"]["name"]) tracks_id = self.ap.get_tracks_id_from_tracklist() trends_ui = self.ap.tl_get_column_values(self.ap.TL_COLUMN_POSITION_TREND)[track_number] trends_api = self.ap.get_position_trends_by_tracks_id(market=AppConfig.get("market")["australia"]["market"], playlist_id=self.playlist9.apple_id, tracks_id=tracks_id[track_number]) assert_that(trends_ui).is_equal_to(trends_api[0]) # step 7 self.ap.change_market(AppConfig.get("market")["canada"]["name"]) tracks_id = self.ap.get_tracks_id_from_tracklist() trends_ui = self.ap.tl_get_column_values(self.ap.TL_COLUMN_POSITION_TREND)[track_number] trends_api = self.ap.get_position_trends_by_tracks_id(market=AppConfig.get("market")["canada"]["market"], playlist_id=self.playlist9.apple_id, tracks_id=tracks_id[track_number]) assert_that(trends_ui).is_equal_to(trends_api[0])