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.src.pages.amazon_playlist_page import AmazonPlaylistPage from app.src.pages.apple_playlist_page import ApplePlaylistPage from app.src.pages.login_page import LoginPage from app.src.pages.position_playlist_popup import PositionPlaylistPopup from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class ApplePlaylistPageTest(unittest.TestCase): playlist33 = json.loads(json.dumps(AppConfig.get("playlist33")), object_hook=lambda d: Namespace(**d)) @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.amazon_playlist = AmazonPlaylistPage(self.driver) self.ap = ApplePlaylistPage(self.driver) self.tp = TrackPage(self.driver) self.pip = PositionPlaylistPopup(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-8381") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-8040][Amazon Playlist Page> Details pop-up] Legend verification.") @allure.description("TC verifies legend view and KPIs on Amazon Playlist Details popup.") def test_amazon_popup_legend_verification(self): self.loginPage.login_with_worker() self.tp.select_market(AppConfig.get("market")["global"]["name"]) self.amazon_playlist.open_amazon_playlist_page(self.playlist33.amazon_id) # step 1 self.amazon_playlist.sort_table_by_column("streams-average") self.amazon_playlist.open_popup() self.pip.verify_chart_elements(AppConfig.get("market")["us"]["market"]) # steps 2-3 self.verify_legend_values() # steps 4-6 self.tp.select_previous_mounth_period() self.verify_legend_values() # step 7 self.tp.select_month_period("August 2017") self.pip.verify_no_data() self.amazon_playlist.close() # step 8-10 self.tp.select_market(AppConfig.get("market")["australia"]["name"]) self.amazon_playlist.sort_table_by_column("streams-average") self.amazon_playlist.open_popup() self.pip.verify_chart_elements(AppConfig.get("market")["australia"]["market"]) self.verify_legend_values(AppConfig.get("market")["australia"]["market"]) @allure.step("PIP - verify legend values") def verify_legend_values(self, market=AppConfig.get("market")["us"]["market"]): values_ui = self.pip.get_legend_kpis() global_streams_ui = values_ui[0] us_streams_ui = values_ui[1] metadata = self.pip.get_metadata() track_id = metadata["track_id"] pl_id = metadata["playlist_id"] start = self.tp.get_calendar_start_date() end = self.tp.get_calendar_end_date() isrc = self.api_client.get_isrc_by_apple_id(market=market, id=track_id)["data"][0]["attributes"]["isrc"] resp_amazon_positions = self.api_client.get_amazon_tracklist_start_end(isrc=isrc, id=f"{pl_id}_{market}", start=start, end=end)["items"] pl_id = f"""amazon_{resp_amazon_positions[0]["playlist"]["amazon_playlist_id"]}""" streams_us_api_resp = self.api_client.get_amazon_streams_playlist(isrc=isrc, playlist_id=pl_id, start=start, end=end, country=market) streams_gl_api_resp = self.api_client.get_amazon_streams_playlist(isrc=isrc, playlist_id=pl_id, start=start, end=end, country="worldwide") streams_us_api = sum(i["streams"] for i in streams_us_api_resp) streams_gl_api = sum(i["streams"] for i in streams_gl_api_resp) assert_that([streams_gl_api, -1]).contains(global_streams_ui) assert_that([streams_us_api, -1]).contains(us_streams_ui)