import json import unittest from argparse import Namespace import allure import pytest 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 ...pages.add_track_popup import AddTrackPopup from ...pages.audience_graph import AudienceGraphChart from ...pages.chart_digest import ChartDigestPage from ...pages.comparison_page import TrackComparisonPage from ...pages.left_navigation_panel import LeftNavigationPanel from ...pages.login_page import LoginPage from ...pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class ComparisonPlaylistSupportTest(unittest.TestCase): track4 = json.loads(json.dumps(AppConfig.get("track4")), object_hook=lambda d: Namespace(**d)) track27 = json.loads(json.dumps(AppConfig.get("track27")), object_hook=lambda d: Namespace(**d)) track14 = json.loads(json.dumps(AppConfig.get("track14")), object_hook=lambda d: Namespace(**d)) track28 = json.loads(json.dumps(AppConfig.get("track28")), object_hook=lambda d: Namespace(**d)) track29 = json.loads(json.dumps(AppConfig.get("track29")), object_hook=lambda d: Namespace(**d)) source = json.loads(json.dumps(AppConfig.get("source")), object_hook=lambda d: Namespace(**d)) australia = json.loads(json.dumps(AppConfig.get("market")["australia"]), object_hook=lambda d: Namespace(**d)) us = json.loads(json.dumps(AppConfig.get("market")["us"]), object_hook=lambda d: Namespace(**d)) canada = json.loads(json.dumps(AppConfig.get("market")["canada"]), object_hook=lambda d: Namespace(**d)) @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.trackPage = TrackPage(self.driver) self.add_track_popup = AddTrackPopup(self.driver) self.comparison_page = TrackComparisonPage(self.driver) self.left_panel = LeftNavigationPanel(self.driver) self.audience_graph = AudienceGraphChart(self.driver) self.chart_digest = ChartDigestPage(self.driver) self.api_client = ApiClient() self.sql_client = MySqlClient() self.ts = TestStatus(self.driver) @allure.story("AP-2147") @allure.severity(allure.severity_level.NORMAL) @allure.title("""Switching Market out of Track Comparison page""") @allure.description( """TC Verifies that during changing market out of Comparison page, after getting back, user DOESN'T see any confirmation popup or need any actions in case some of the previously added to Comparison tracks are non-Sony for the currently selected market. Both Sony and NON-Sony tracks can be added to comparison and be displayed not depending on the selected market. """ ) def test__switching_market_out_of_comparison(self): tracks = [self.track4, self.track27, self.track14, self.track28, self.track29] self.comparison_page.remove_tracks_if_present_with_worker(self.us.market) user = self.loginPage.get_user_email_with_worker() token = self.api_client.authorize(user=user) for track in tracks: self.api_client.add_track_to_comparison(token=token, market=self.us.market, isrc=track.isrc, id=track.id) self.loginPage.login_with_worker() self.loginPage.is_logged_in() self.left_panel.open_comparison_page() self.trackPage.select_market(self.australia.name) self.comparison_page.select_market_from_dd(self.australia.name) self.comparison_page.select_period_from_dd(AppConfig.get("periods")["28d"]["name"]) self.left_panel.open_comparison_page() added_track_names = self.comparison_page.get_added_tracks() self.ts.markFinal( added_track_names == [t.name for t in tracks], "STEP 1: all added tracks are displayed: " "ui: {}, expected: {}".format(added_track_names, [t.name for t in tracks]), ) # step 2 self.left_panel.open_chart_digest_page() self.chart_digest.is_opened() # step 3 self.trackPage.select_market(self.us.name) self.trackPage.is_market_in_header_correct(self.us.header) # step 4 self.left_panel.open_comparison_page() added_track_names = self.comparison_page.get_added_tracks() self.ts.markFinal( added_track_names == [t.name for t in tracks], "STEP 2-4: all added tracks are displayed: " "ui: {}, expected: {}".format(added_track_names, [t.name for t in tracks]), ) self.left_panel.open_chart_digest_page() self.chart_digest.is_opened() self.trackPage.select_market(self.canada.name) self.trackPage.is_market_in_header_correct(self.canada.header) self.left_panel.open_comparison_page() added_track_names = self.comparison_page.get_added_tracks() self.ts.markFinal( added_track_names == [t.name for t in tracks], "STEP 5-7: all added tracks are displayed: " "ui: {}, expected: {}".format([t.name for t in tracks], added_track_names), )