# import collections # import logging # from operator import itemgetter # # import pandas # import pytest # from ui_automation_framework.utils import logger as cl # from ui_automation_framework.utils import CoreConfig # # from app.api_client import ApiClient # # log = cl.Logger(logging.DEBUG) # # new_env = 'https://test-proxy.apollo.stream' # old_env = 'https://proxy.apollo.stream' # api_client_old = ApiClient(host_endpoint=old_env) # api_client_new = ApiClient(host_endpoint=new_env) # token_new = api_client_new.authorize() # prod_user = 'anna.andreyeva@dataart.com' # # request_url = 'Request URL' # # def f(dat, c='red'): # colors = [] # for i in dat: # if i: # c = 'green' # elif i == '': # c = 'white' # else: # c = 'red' # colors.append(f'background-color: {c}') # return colors # # # chart_date = 'chart_date' # count = 'count' # previous = 'previous' # chart_available = 'chart_available' # json_keys_dashboard = ['artist', 'artists', 'id', 'image_url', 'is_new', 'is_re_enter', 'is_sony', 'isrc', 'name', 'position', 'trend'] # gtp_keys = ['end_date', 'is_entered', 'isrc', 'market', 'start_date', 'trend'] # spotify_date = "&date=2021-09-20" # # markets = ['global', 'us'] # vendors = [ # 'apple', # # 'spotify' # ] # sections = [ # # 'additions','removals', # 'moves', # # 'top' # ] # timestamps_e1 = [ # '1640164150851', '1640164398803', '1640164150852', '1640164398804', '1640164398805', '1640164248056', '1640164380866'] # timestamps_e2 = ['1640164440918', '1640164619185', '1640164440919', '1640164640483'] # limits = ['1', '20'] # # # @pytest.mark.parametrize("market", markets) # @pytest.mark.parametrize("vendor", vendors) # @pytest.mark.parametrize("timestamp", timestamps_e1) # @pytest.mark.parametrize("section", sections) # def test_go_dashboard_e_1(market, vendor, timestamp, section): # # for apple vendor date parameter should be removed # old_endpoint = f'/apollo-api/v1/charts/{section}/?vendor={vendor}&market={market}&order_by=is_starred_track&order_by=position&fields=artist&fields=artists&fields=change&fields=id&fields=image_url&fields=is_starred&fields=isrc&fields=name&fields=position&fields=is_sony&fields=is_new&fields=is_re_enter&fields=is_starred_track×tamp={timestamp}&date=2021-09-20' # if market in ['_gl', 'global']: # market = 'worldwide' # new_endpoint = f'/gate-api/charts/{section}/?vendor={vendor}&market={market}&order_by=is_starred_track&order_by=position&fields=artist&fields=artists&fields=change&fields=id&fields=image_url&fields=is_starred&fields=isrc&fields=name&fields=position&fields=is_sony&fields=is_new&fields=is_re_enter&fields=is_starred_track×tamp={timestamp}&date=2021-09-20' # if vendor == "apple": # old_endpoint = old_endpoint.replace(spotify_date, "") # new_endpoint = new_endpoint.replace(spotify_date, "") # # get response # old_resp = api_client_old.get_response(endpoint=old_endpoint, user=CoreConfig.USER_EMAIL, env=old_env, token=token_old)['body'] # log.info(f'old resp: {old_resp}') # log.info(f'old URL: {old_endpoint}') # old_resp_tracks = old_resp['tracks'] # new_resp = api_client_old.get_response(endpoint=new_endpoint, user=CoreConfig.USER_EMAIL, env=new_env)['body'] # log.info(f'new resp: {new_resp}') # log.info(f'new URL: {new_endpoint}') # new_resp_tracks = new_resp['tracks'] # # indexes_all = [request_url, chart_date, count, previous] # for t in old_resp_tracks: # indexes_all.extend([k for k in json_keys_dashboard if k in t.keys()]) # # log.info(f'indexes all: {indexes_all}') # log.info(f'indexes number: {len(indexes_all)}') # old_endpoint_values = [] # new_endpoint_values = [] # diffs = [] # # old_endpoint_values.append(old_endpoint) # new_endpoint_values.append(new_endpoint) # diffs.append('') # for i in [chart_date, count, previous]: # old_endpoint_values.append(old_resp[i]) # new_endpoint_values.append(new_resp[i]) # diffs.append(new_resp[i] == old_resp[i]) # # for to, tn in zip(old_resp_tracks, new_resp_tracks): # diffs.extend([to[k] == tn[k] for k in json_keys_dashboard if k in to.keys()]) # new_endpoint_values.extend([tn[k] for k in json_keys_dashboard if k in t.keys()]) # old_endpoint_values.extend([to[k] for k in json_keys_dashboard if k in t.keys()]) # # df = pandas.DataFrame({ # 'IS CORRECT': diffs, # 'OLD API VALUE': old_endpoint_values, # 'NEW API VALUE': new_endpoint_values, # }, # index=indexes_all) # # df.reset_index().style.apply(f, subset=['IS CORRECT']) \ # .to_excel(f'GO_charts_{section}_{market}_{vendor}_{timestamp}.xlsx') # # # # @pytest.mark.parametrize("vendor", vendors) # # @pytest.mark.parametrize("timestamp", timestamps_e2) # # @pytest.mark.parametrize("limit", limits) # # def test_go_dashboard_e_2(vendor, timestamp, limit): # # old_endpoint = f'/apollo-api/charts/summary/?isrc=USUM72120404&vendor={vendor}&offset=0&limit={limit}×tamp={timestamp}&date=2021-09-20' # # new_endpoint = f'/gate-api/charts/summary/?isrc=USUM72120404&vendor={vendor}&offset=0&limit={limit}×tamp={timestamp}&date=2021-09-20' # # # get response # # old_resp = api_client_old.get_response(endpoint=old_endpoint, user=CoreConfig.USER_EMAIL, env=old_env, token=token_old)['body'] # # log.info(f'old resp: {old_resp}') # # log.info(f'old URL: {old_endpoint}') # # keys_lvl1 = sorted(list(old_resp.keys())) # # keys_lvl1.remove('items') # # keys_lvl2 = sorted(old_resp["items"][0].keys()) # # new_resp = api_client_old.get_response(endpoint=new_endpoint, user=CoreConfig.USER_EMAIL, env=new_env)['body'] # # log.info(f'new resp: {new_resp}') # # log.info(f'new URL: {new_endpoint}') # # # log.info(f'new keys 1: {sorted(list(new_resp.keys()))}') # # # log.info(f'new keys 2: {sorted(new_resp["items"][0].keys())}') # # # log.info(f'old keys 1: {sorted(list(old_resp.keys()))}') # # # log.info(f'old keys 2: {sorted(old_resp["items"][0].keys())}') # # # # indexes_all = ['URL'] + keys_lvl1 + len(old_resp["items"])*keys_lvl2 # # # # log.info(f'indexes all: {indexes_all}') # # old_endpoint_values = [] # # new_endpoint_values = [] # # diffs = [] # # # # old_endpoint_values.append(old_endpoint) # # new_endpoint_values.append(new_endpoint) # # diffs.append('') # # # # for i in keys_lvl1: # # old_endpoint_values.append(old_resp[i]) # # new_endpoint_values.append(new_resp[i]) # # diffs.append(old_resp[i] == new_resp[i]) # # # # old_items = sorted(old_resp['items'], key=itemgetter('country_name')) # # new_items = sorted(new_resp['items'], key=itemgetter('country_name')) # # # # for apple vendor not all countries have country_name # # # old_items = sorted(old_resp['items'], key=itemgetter('country_code')) # # # new_items = sorted(new_resp['items'], key=itemgetter('country_code')) # # # # for i in list(range(0, len(old_resp["items"]))): # # old_endpoint_values.extend(old_items[i][k] for k in keys_lvl2) # # new_endpoint_values.extend(new_items[i][k] for k in keys_lvl2) # # diffs.extend(old_items[i][k] == new_items[i][k] for k in keys_lvl2) # # # # df = pandas.DataFrame({ # # 'IS CORRECT': diffs, # # 'OLD API VALUE': old_endpoint_values, # # 'NEW API VALUE': new_endpoint_values, # # }, # # index=indexes_all) # # # # df.reset_index().style.apply(f, subset=['IS CORRECT']) \ # # .to_excel(f'GO_charts_summary_limit={limit}_{vendor}_{timestamp}.xlsx')