from datetime import datetime as dt from datetime import timedelta import allure from assertpy import assert_that from app.src.api.facade import ApiClient api = ApiClient() api.authorize() @allure.testcase("AG-11676") @allure.title("Notifications for 30 last days are shown") def test_notifications_for_30_last_days_are_shown(authorized_api): notifications = authorized_api.apollo.get_push_notifications( limit=2000, offset=0, type=["starred_track_in_playlist", "starred_track_in_chart", "starred_playlist", "top_chart"])["body"]["items"] last_notification_datetime = dt.strptime(notifications[-1]["date"], "%Y-%m-%dT%H:%M:%S") thirty_days_ago = dt.now() - timedelta(days=30) assert_that(last_notification_datetime).is_greater_than_or_equal_to(thirty_days_ago) @allure.testcase("AG-11674") @allure.title("Notifications search") def test_notifications_search(authorized_api): search_query = "Top" notifications = authorized_api.apollo.get_push_notifications( limit=2000, offset=0, search=search_query, type=["starred_track_in_playlist", "starred_track_in_chart", "starred_playlist", "top_chart"])["body"]["items"] assert_that(all([search_query in i["target"] for i in notifications])).is_true() @allure.testcase("AG-11675") @allure.title("Notifications filtering") def test_notifications_filtering(authorized_api): notifications = authorized_api.apollo.get_push_notifications( limit=2000, offset=0, type=["starred_track_in_playlist", "starred_track_in_chart", "starred_playlist", "top_chart"])["body"]["items"] topics = { "playlist_additions": [], "playlist_removals": [], "playlist_major_moves": [], "starred_playlist_additions": [], "starred_playlist_removals": [], "starred_playlist_major_moves": [], "chart_additions": [], "chart_removals": [], "chart_major_moves": [], "playlist_update": [], "chart_update": [] } for notification in notifications: topic = notification["topic"] if topic in topics: topics[topic].append(notification) all_topics_length = sum(len(v) for v in topics.values()) assert_that(len(notifications)).is_equal_to(all_topics_length)