import unittest import allure import pytest from assertpy import assert_that from parameterized import parameterized from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig from ...pages.login_page import LoginPage from ...pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class DeepLinkingTrackPageTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.tp = TrackPage(self.driver) self.ts = TestStatus(self.driver) @allure.issue("https://data-analytics.atlassian.net/browse/AP-10992") @pytest.mark.flaky(reruns=0) @allure.story("AP-4774") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4526] Data recalculation for multiple selected markets. APPLE. STEPS 1-12") @allure.description("TC verifies that after selecting several markets data on the UI is recalculated properly. STEPS 1-12") def test_select_several_countries_apple_steps_1_12(self): self.loginPage.login_with_worker() self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track40")["id"], market_id=AppConfig.get("market")["global"]["url"]) self.tp.select_dsp(AppConfig.get("dsp")["spotify"]) # step 1-2 totals_before = self.tp.get_streams_in_period_total() url_base = self.tp.get_url() self.tp.open_current_url_with_param("&str_gr_start_date=2020-10-10&str_gr_end_date=2020-10-10&str_gr_country=ca%2Cus") totals_after = self.tp.get_streams_in_period_total() assert_that(totals_after).is_not_equal_to(totals_before) # step 3 self.tp.select_dsp(AppConfig.get("dsp")["apple"]) self.tp.graph_verify_chosen_country("2 Markets") # step 4 lb_lf_values = self.tp.get_lean_values() lb_lf_values = lb_lf_values["lean_forward_by_source"] + lb_lf_values["lean_back_by_source"] api_values = self.tp.graph_legend_get_api_values_apple( markets=[AppConfig.get("market")["us"]["market"], AppConfig.get("market")["canada"]["market"]], isrc=AppConfig.get("track40")["isrc"], ) assert_that(lb_lf_values).is_equal_to(list(api_values["lf"].values()) + list(api_values["lb"].values())) # step 5 apple_in_period = int(self.tp.get_streams_in_period_total().replace(",", "")) self.tp.select_dsp(AppConfig.get("dsp")["by_dsp"]) by_dsp_in_period = int(self.tp.graph_get_legend_by_dsp()[4].split("\n")[0].replace(",", "")) assert_that(apple_in_period).is_equal_to(by_dsp_in_period) assert_that(api_values["total"]).is_equal_to(by_dsp_in_period) # step 6 self.tp.open_url(f"{url_base}&str_gr_dsp=2&str_gr_view=2&str_gr_start_date=2020-10-01&str_gr_end_date=2020-10-31&str_gr_country=ca%2Cus") api_values = self.tp.graph_legend_get_api_values_apple( markets=[AppConfig.get("market")["us"]["market"], AppConfig.get("market")["canada"]["market"]], isrc=AppConfig.get("track40")["isrc"], ) month_total = int(self.tp.get_streams_in_period_total().replace(",", "")) assert_that(month_total).is_equal_to(api_values["total"]) # step 7 self.tp.select_dsp(AppConfig.get("dsp")["by_dsp"]) by_dsp_in_period_total = int(self.tp.graph_get_legend_by_dsp()[4].split("\n")[0].replace(",", "")) by_dsp_in_period_avg = int(self.tp.graph_get_legend_by_dsp()[5].replace(",", "")) assert_that(by_dsp_in_period_total).is_equal_to(api_values["total"]) assert_that(by_dsp_in_period_avg).is_equal_to(int(api_values["total"] / 31)) # step 8 self.tp.go_back() lb_lf_values = self.tp.get_lean_values() lb_lf_values = lb_lf_values["lean_forward_by_source"] + lb_lf_values["lean_back_by_source"] assert_that(lb_lf_values).is_equal_to(list(api_values["lf"].values()) + list(api_values["lb"].values())) # step 9 containers_values = self.tp.get_container_values()["streams"] assert_that(containers_values).is_equal_to(list(api_values["container"].values())) # step 10 age_group_values = self.tp.get_age_groups_tooltip_info()["streams"] assert_that(age_group_values).is_equal_to(api_values["ages"]) # step 11 gender_values = self.tp.get_gender_groups_tooltip_info()["streams"] assert_that(gender_values).is_equal_to(api_values["genders"]) # step 12 self.tp.stream_and_source_choose_region(self.tp.REGION_NORTH_AMERICA) age_group_values_after = self.tp.get_age_groups_tooltip_info()["streams"] gender_values_after = self.tp.get_gender_groups_tooltip_info()["streams"] containers_values_after = self.tp.get_container_values()["streams"] lb_lf_values_after = self.tp.get_lean_values() lb_lf_values_after = lb_lf_values_after["lean_forward_by_source"] + lb_lf_values_after["lean_back_by_source"] assert_that(age_group_values).is_equal_to(age_group_values_after) assert_that(gender_values).is_equal_to(gender_values_after) assert_that(containers_values).is_equal_to(containers_values_after) assert_that(lb_lf_values).is_equal_to(lb_lf_values_after) @parameterized.expand( [ ("Middle East", AppConfig.get("regions")["middle_east"]["api"]), ("Africa", AppConfig.get("regions")["africa"]["api"]), ("CIS", AppConfig.get("regions")["cis"]["api"]), ("Asia", AppConfig.get("regions")["asia"]["api"]), ("Europe", AppConfig.get("regions")["europe"]["api"]), ("Latin-Iberia", AppConfig.get("regions")["latin_iberia"]["api"]), ("Oceania", AppConfig.get("regions")["oceania"]["api"]), ("UK", AppConfig.get("regions")["uk"]["api"]), ] ) @allure.story("AP-4774") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4526] Data recalculation for multiple selected markets. APPLE. STEP 13") @allure.description("TC verifies that after selecting several markets data on the UI is recalculated properly. STEP 13") def test_select_several_countries_apple_step_13(self, region, markets): self.loginPage.login_with_worker() self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track40")["id"], market_id=AppConfig.get("market")["global"]["url"]) url_base = self.tp.get_url() self.tp.open_url(f"{url_base}&str_gr_dsp=2&str_gr_view=2&str_gr_start_date=2020-10-01&str_gr_end_date=2020-10-31") self.tp.stream_and_source_choose_region(region) api_values = self.tp.graph_legend_get_api_values_apple(markets=markets, isrc=AppConfig.get("track40")["isrc"]) age_group_values = self.tp.get_age_groups_tooltip_info()["streams"] gender_values = self.tp.get_gender_groups_tooltip_info()["streams"] containers_values = self.tp.get_container_values()["streams"] lb_lf_values = self.tp.get_lean_values() lb_lf_values = lb_lf_values["lean_forward_by_source"] + lb_lf_values["lean_back_by_source"] assert_that(age_group_values).is_equal_to(api_values["ages"]) assert_that(gender_values).is_equal_to(api_values["genders"]) assert_that(containers_values).is_equal_to(list(api_values["container"].values())) assert_that(lb_lf_values).is_equal_to(list(api_values["lf"].values()) + list(api_values["lb"].values()))