import logging import random from datetime import datetime as dt import allure from assertpy import assert_that from ui_automation_framework.utils import AppConfig from ui_automation_framework.utils import logger as cl from app.src.api.facade import ApiClient from app.src.helpers.api_data_provider import ApiDataProvider log = cl.Logger(logging.DEBUG) api = ApiClient() api.authorize() data_provider = ApiDataProvider(api) @allure.severity(allure.severity_level.NORMAL) @allure.title("Tracklist sorting") @allure.testcase("https://data-analytics.atlassian.net/browse/AG-11680") def test_tracklist_sorting(): tracklist = api.apollo.get_spotify_playlist_tracklist( playlist_id=random.choice(list(AppConfig.get("playlists_spotify").keys())), order_by="current_position", limit=2000, offset=0)["body"]["items"] current_positions = [track["current_position"] for track in tracklist] assert_that(current_positions).is_equal_to(sorted(current_positions)) tracklist_with_added_date = api.apollo.get_spotify_playlist_tracklist( playlist_id=random.choice(list(AppConfig.get("playlists_spotify").keys())), order_by=["-added_date", "current_position"], limit=2000, offset=0)["body"]["items"] added_date_and_current_position = [(dt.strptime(track["added_date"], "%Y-%m-%d"), track["current_position"]) for track in tracklist_with_added_date] sorted_added_date_and_current_position = sorted(added_date_and_current_position, key=lambda x: (-x[0].timestamp(), x[1])) assert_that(added_date_and_current_position).is_equal_to(sorted_added_date_and_current_position)