import time import pytest from app.data import ISRCS from app.src.tests.insights.tests_common import markets_to_test, \ start_date, end_date from app.utils import get_insights_market, generate_excel_file, calculate_diff_percent QUERY = 'tiktokSummary' apollo_endpoint = "/dsp-api/delphi/tiktok/tracks/analytics?breakdowns=content_type_country%2Ctotals&metrics=creations%2Cvideo_views&isrc={0}&start_date={1}&end_date={2}&country_code={3}" @pytest.mark.parametrize("market", markets_to_test) def test_tiktokSummary(market, graphql, api_apollo): (insights_views_pgc, insights_creations_pgc, insights_views_ugc, insights_creations_ugc, apollo_views_pgc, apollo_creations_pgc, apollo_views_ugc, apollo_creations_ugc, diff_views_pgc, diff_creations_pgc, diff_views_ugc, diff_creations_ugc) = [], [], [], [], [], [], [], [], [], [], [], [] for isrc in ISRCS: variables = {"isrc": isrc, "type": "BY_CONTENT_TYPE", "startDate": start_date, "endDate": end_date, "countries": get_insights_market(market), "limit": 25} response_insights = graphql.fetch_data(QUERY, variables) insights_items = response_insights['globalSoundRecordingByIsrc']['tiktok']['summary']['items'] insights_views_pgc_item = sum(item['views'] for item in insights_items if item['id'] == "PGC") insights_creations_pgc_item = sum(item['creations'] for item in insights_items if item['id'] == "PGC") insights_views_ugc_item = sum(item['views'] for item in insights_items if item['id'] == "UGC") insights_creations_ugc_item = sum(item['creations'] for item in insights_items if item['id'] == "UGC") insights_views_pgc.append(insights_views_pgc_item) insights_views_ugc.append(insights_views_ugc_item) insights_creations_pgc.append(insights_creations_pgc_item) insights_creations_ugc.append(insights_creations_ugc_item) response_apollo = api_apollo.get( apollo_endpoint.format(isrc, start_date, end_date, market)) if response_apollo['days_count'] > 0: apollo_breakdowns = response_apollo['breakdowns']['content_type_country'] apollo_views_pgc_item = sum(a for a in apollo_breakdowns['pgc'][market]['video_views'] if a is not None) \ if ('pgc' in apollo_breakdowns and apollo_breakdowns['pgc'] and market in apollo_breakdowns['pgc'] and apollo_breakdowns['pgc'][market]) else 0 apollo_creations_pgc_item = sum(a for a in apollo_breakdowns['pgc'][market]['creations'] if a is not None) \ if ('pgc' in apollo_breakdowns and apollo_breakdowns['pgc'] and market in apollo_breakdowns['pgc'] and apollo_breakdowns['pgc'][market]) else 0 apollo_views_ugc_item = sum(a for a in apollo_breakdowns['ugc'][market]['video_views'] if a is not None) \ if ('ugc' in apollo_breakdowns and apollo_breakdowns['ugc'] and market in apollo_breakdowns['ugc'] and apollo_breakdowns['ugc'][market]) else 0 apollo_creations_ugc_item = sum(a for a in apollo_breakdowns['ugc'][market]['creations'] if a is not None) \ if ('ugc' in apollo_breakdowns and apollo_breakdowns['ugc'] and market in apollo_breakdowns['ugc'] and apollo_breakdowns['ugc'][market]) else 0 else: apollo_views_pgc_item, apollo_creations_pgc_item, apollo_views_ugc_item, apollo_creations_ugc_item = 0, 0, 0, 0 apollo_views_pgc.append(apollo_views_pgc_item) apollo_views_ugc.append(apollo_views_ugc_item) apollo_creations_pgc.append(apollo_creations_pgc_item) apollo_creations_ugc.append(apollo_creations_ugc_item) diff_views_pgc.append(calculate_diff_percent(apollo_views_pgc_item, insights_views_pgc_item)) diff_creations_pgc.append(calculate_diff_percent(apollo_creations_pgc_item, insights_creations_pgc_item)) diff_views_ugc.append(calculate_diff_percent(apollo_views_ugc_item, insights_views_ugc_item)) diff_creations_ugc.append(calculate_diff_percent(apollo_creations_ugc_item, insights_creations_ugc_item)) time.sleep(3) data_dict = { "isrc": ISRCS, "apollo_views_pgc": apollo_views_pgc, "insights_views_pgc": insights_views_pgc, "change_views_pgc": diff_views_pgc, "apollo_views_ugc": apollo_views_ugc, "insights_views_ugc": insights_views_ugc, "change_views_ugc": diff_views_ugc, "apollo_creations_pgc": apollo_creations_pgc, "insights_creations_pgc": insights_creations_pgc, "change_creations_pgc": diff_creations_pgc, "apollo_creations_ugc": apollo_creations_ugc, "insights_creations_ugc": insights_creations_ugc, "change_creations_ugc": diff_creations_ugc, } generate_excel_file(data_dict, QUERY, [start_date, end_date, market])