import allure import pytest from ui_automation_framework.utils import AppConfig from app.src.api.facade import ApiClient from app.src.helpers.api_data_provider import ApiDataProvider api = ApiClient() api.authorize() data_provider = ApiDataProvider(api) data = data_provider.get_sony_tracks_isrcs(market="us", ignore_response_attaching=True) tracks_count_from_top_charts = 20 isrcs = data[0][:tracks_count_from_top_charts] markets = AppConfig.get("top_markets") @pytest.mark.parametrize("isrc", isrcs) @pytest.mark.parametrize("market", markets[:2]) @allure.story("AG-6720") @allure.severity(allure.severity_level.CRITICAL) @allure.title("Amazon sources") @allure.description("Comparing LB/LF in streams monitoring and detailed graph according to AG-6720") def test_amazon_sources_mapping(isrc, market): start_date, end_date = data_provider.get_track_start_end_dates(isrc, 3) resp_streams_monitoring = api.dsp.get_dsp_api_streams_monitoring( "isrc={}".format(isrc), "start_date={}".format(start_date), "end_date={}".format(end_date), "market={}".format(market), ) resp_graph = api.dsp.get_dsp_api_detailed_graph_streams( "isrc={}".format(isrc), "start_date={}".format(start_date), "end_date={}".format(end_date), "market={}".format(market), "vendor=amazon", ) graph_lean_back = sum([c["y"]["playlist"] + c["y"]["station"] for c in resp_graph["body"]["coordinates"] if c["y"] is not None]) graph_lean_forward = sum([c["y"]["user_playlist"] + c["y"]["songs"] + c["y"]["search"] + c["y"]["artist"] + c["y"]["album"] for c in resp_graph["body"]["coordinates"] if c["y"] is not None]) amazon_lean_back = resp_streams_monitoring["body"]["amazon"]["lean_back"] amazon_lean_forward = resp_streams_monitoring["body"]["amazon"]["lean_forward"] streams_monitoring_total = amazon_lean_back + amazon_lean_forward graph_total = [i["y"] if i["y"] is not None else {'total': 0} for i in resp_graph["body"]["coordinates"]] graph_total = sum([i["total"] for i in graph_total]) assert graph_lean_back == amazon_lean_back, "Lean back is matching" assert graph_lean_forward == amazon_lean_forward, "Lean forward is matching" assert streams_monitoring_total == graph_total, "Streams total are matching"