import pytest from tests.data.base import dt_now from tests.data.messages import feed_messages as fm @pytest.mark.parametrize( "input_messages,expected_result_len,expected_result", ( ( [ fm.basic_update_message(1, 1, 2, country_code="fr", exclude=("data.recipient.devices",)), fm.basic_starred_entry_message(2, 5, 2, exclude=("data.content.track",)), fm.basic_top_entry_message(3, 1, 1, exclude=("data.content.track.artists",)), fm.basic_starred_exit_message(2, 5, 2, exclude=("data.content.track",)), fm.basic_top_exit_message(3, 1, 1, exclude=("data.content.track.artists",)), fm.basic_starred_major_move_message(2, 5, 2, exclude=("data.content.track",)), fm.basic_top_major_move_message(3, 1, 1, exclude=("data.content.track.artists",)), fm.basic_chart_update_message(3, 1, 1, exclude=("data.content.chart.dsp",)), fm.basic_chart_update_message(2, 5, 2, exclude=("data.content.chart.dsp",)), fm.basic_starred_chart_entry_message(2, 5, 2, exclude=("data.content.track",)), fm.basic_starred_chart_entry_message(3, 1, 1, exclude=("data.content.track.artists",)), fm.basic_starred_chart_exit_message(2, 5, 2, exclude=("data.content.track",)), fm.basic_starred_chart_exit_message(3, 1, 1, exclude=("data.content.track.artists",)), fm.basic_chart_major_move_message(2, 5, 2, exclude=("data.content.track",)), fm.basic_chart_major_move_message(3, 1, 1, exclude=("data.content.track.artists",)) ], 0, None ), ( [ fm.basic_update_message(1, 1, 3, country_code="gb", dsp="apple", account_id=4), fm.basic_update_message(2, 2, 2, country_code="global", dsp="spotify", account_id=9), fm.basic_starred_entry_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_starred_entry_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_top_entry_message(5, 5, 3, country_code="fr", dsp="apple", account_id=2), fm.basic_top_entry_message(6, 2, 8, country_code="au", dsp="spotify", account_id=1), fm.basic_starred_exit_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_starred_exit_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_top_exit_message(5, 5, 3, country_code="fr", dsp="apple", account_id=2), fm.basic_top_exit_message(6, 2, 8, country_code="au", dsp="spotify", account_id=1), fm.basic_starred_major_move_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_starred_major_move_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_top_major_move_message(5, 5, 3, country_code="fr", dsp="apple", account_id=2), fm.basic_top_major_move_message(6, 2, 8, country_code="au", dsp="spotify", account_id=1), fm.basic_starred_major_move_message( 3, 1, 3, country_code="us", dsp="apple", account_id=1, move_up=False ), fm.basic_starred_major_move_message( 4, 2, 4, country_code="us", dsp="spotify", account_id=1, move_up=False ), fm.basic_top_major_move_message(5, 5, 3, country_code="fr", dsp="apple", account_id=2, move_up=False), fm.basic_top_major_move_message(6, 2, 8, country_code="au", dsp="spotify", account_id=1, move_up=False) ], 18, [ fm.basic_parsed_update_message(1, 1, 3, country_code="gb", dsp="apple", account_id=4), fm.basic_parsed_update_message(2, 2, 2, country_code="global", dsp="spotify", account_id=9), fm.basic_parsed_starred_entry_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_starred_entry_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_parsed_top_entry_message(5, 5, 3, country_code="fr", dsp="apple", account_id=2), fm.basic_parsed_top_entry_message(6, 2, 8, country_code="au", dsp="spotify", account_id=1), fm.basic_parsed_starred_exit_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_starred_exit_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_parsed_top_exit_message(5, 5, 3, country_code="fr", dsp="apple", account_id=2), fm.basic_parsed_top_exit_message(6, 2, 8, country_code="au", dsp="spotify", account_id=1), fm.basic_parsed_starred_major_move_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_starred_major_move_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_parsed_top_major_move_message(5, 5, 3, country_code="fr", dsp="apple", account_id=2), fm.basic_parsed_top_major_move_message(6, 2, 8, country_code="au", dsp="spotify", account_id=1), fm.basic_parsed_starred_major_move_message( 3, 1, 3, country_code="us", dsp="apple", account_id=1, move_up=False ), fm.basic_parsed_starred_major_move_message( 4, 2, 4, country_code="us", dsp="spotify", account_id=1, move_up=False ), fm.basic_parsed_top_major_move_message( 5, 5, 3, country_code="fr", dsp="apple", account_id=2, move_up=False ), fm.basic_parsed_top_major_move_message( 6, 2, 8, country_code="au", dsp="spotify", account_id=1, move_up=False ) ] ), ( [ fm.basic_chart_update_message(1, 1, 3, country_code="gb", dsp="apple", account_id=4), fm.basic_chart_update_message(2, 2, 2, country_code="global", dsp="spotify", account_id=9), fm.basic_starred_chart_entry_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_starred_chart_entry_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_starred_chart_exit_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_starred_chart_exit_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_chart_major_move_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_chart_major_move_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_chart_major_move_message( 3, 1, 3, country_code="us", dsp="apple", account_id=1, move_up=False ), fm.basic_chart_major_move_message( 4, 2, 4, country_code="us", dsp="spotify", account_id=1, move_up=False ), ], 10, [ fm.basic_parsed_chart_update_message(1, 1, 3, country_code="gb", dsp="apple", account_id=4), fm.basic_parsed_chart_update_message( 2, 2, 2, country_code="global", dsp="spotify", account_id=9 ), fm.basic_parsed_chart_entry_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_chart_entry_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_parsed_chart_exit_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_chart_exit_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_parsed_chart_major_move_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_chart_major_move_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_parsed_chart_major_move_message( 3, 1, 3, country_code="us", dsp="apple", account_id=1, move_up=False ), fm.basic_parsed_chart_major_move_message( 4, 2, 4, country_code="us", dsp="spotify", account_id=1, move_up=False ), ] ), ), ) def test_parse_full_messages(test_logger, input_messages, expected_result_len, expected_result): from apollo_messages_views.utils.input import parse_full_events result = parse_full_events(test_logger, input_messages) assert len(result) == expected_result_len if expected_result is not None: for i, item in enumerate(expected_result): assert result[i] == item @pytest.mark.parametrize( "input_messages,expected_result_len,expected_result", ( ( [ fm.basic_parsed_update_message(1, 1, 3, country_code="gb", dsp="apple", account_id=4), fm.basic_parsed_update_message(2, 2, 2, country_code="global", dsp="spotify", account_id=9), fm.basic_parsed_starred_entry_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_starred_entry_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_parsed_top_entry_message(5, 5, 3, country_code="fr", dsp="apple", account_id=2), fm.basic_parsed_top_entry_message(6, 2, 8, country_code="au", dsp="spotify", account_id=1), fm.basic_parsed_starred_exit_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_starred_exit_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_parsed_top_exit_message(5, 5, 3, country_code="fr", dsp="apple", account_id=2), fm.basic_parsed_top_exit_message(6, 2, 8, country_code="au", dsp="spotify", account_id=1), fm.basic_parsed_starred_major_move_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_starred_major_move_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_parsed_top_major_move_message(5, 5, 3, country_code="fr", dsp="apple", account_id=2), fm.basic_parsed_top_major_move_message(6, 2, 8, country_code="au", dsp="spotify", account_id=1), fm.basic_parsed_starred_major_move_message( 3, 1, 3, country_code="us", dsp="apple", account_id=1, move_up=False ), fm.basic_parsed_starred_major_move_message( 4, 2, 4, country_code="us", dsp="spotify", account_id=1, move_up=False ), fm.basic_parsed_top_major_move_message( 5, 5, 3, country_code="fr", dsp="apple", account_id=2, move_up=False ), fm.basic_parsed_top_major_move_message( 6, 2, 8, country_code="au", dsp="spotify", account_id=1, move_up=False ) ], 18, [ fm.feed_update_message(1, 1, 3, country_code="gb", dsp="apple", account_id=4), fm.feed_update_message(2, 2, 2, country_code="global", dsp="spotify", account_id=9), fm.feed_starred_entry_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.feed_starred_entry_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.feed_top_entry_message(5, 5, 3, country_code="fr", dsp="apple", account_id=2), fm.feed_top_entry_message(6, 2, 8, country_code="au", dsp="spotify", account_id=1), fm.feed_starred_exit_message( 3, 1, 3, country_code="us", dsp="apple", account_id=1, track_artists_names=True ), fm.feed_starred_exit_message( 4, 2, 4, country_code="us", dsp="spotify", account_id=1, track_artists_names=True ), fm.feed_top_exit_message( 5, 5, 3, country_code="fr", dsp="apple", account_id=2, track_artists_names=True ), fm.feed_top_exit_message( 6, 2, 8, country_code="au", dsp="spotify", account_id=1, track_artists_names=True ), fm.feed_starred_major_move_message( 3, 1, 3, country_code="us", dsp="apple", account_id=1, track_artists_names=True), fm.feed_starred_major_move_message( 4, 2, 4, country_code="us", dsp="spotify", account_id=1, track_artists_names=True ), fm.feed_top_major_move_message( 5, 5, 3, country_code="fr", dsp="apple", account_id=2, track_artists_names=True ), fm.feed_top_major_move_message( 6, 2, 8, country_code="au", dsp="spotify", account_id=1, track_artists_names=True ), fm.feed_starred_major_move_message( 3, 1, 3, country_code="us", dsp="apple", account_id=1, move_up=False, track_artists_names=True ), fm.feed_starred_major_move_message( 4, 2, 4, country_code="us", dsp="spotify", account_id=1, move_up=False, track_artists_names=True ), fm.feed_top_major_move_message( 5, 5, 3, country_code="fr", dsp="apple", account_id=2, move_up=False, track_artists_names=True ), fm.feed_top_major_move_message( 6, 2, 8, country_code="au", dsp="spotify", account_id=1, move_up=False, track_artists_names=True ), ] ), ( [ fm.basic_parsed_chart_update_message(1, 1, 3, country_code="gb", dsp="apple", account_id=4), fm.basic_parsed_chart_update_message(2, 2, 2, country_code="global", dsp="spotify", account_id=9), fm.basic_parsed_chart_entry_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_chart_entry_message(4, 2, 4, country_code="gb", dsp="spotify", account_id=1), fm.basic_parsed_chart_exit_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_chart_exit_message(4, 2, 4, country_code="gb", dsp="spotify", account_id=1), fm.basic_parsed_chart_major_move_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.basic_parsed_chart_major_move_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.basic_parsed_chart_major_move_message( 3, 1, 3, country_code="us", dsp="apple", account_id=1, move_up=False ), fm.basic_parsed_chart_major_move_message( 4, 2, 4, country_code="us", dsp="spotify", account_id=1, move_up=False ), ], 10, [ fm.feed_chart_update_message(1, 1, 3, country_code="gb", dsp="apple", account_id=4), fm.feed_chart_update_message(2, 2, 2, country_code="global", dsp="spotify", account_id=9), fm.feed_top_chart_entry_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.feed_top_chart_entry_message(4, 2, 4, country_code="gb", dsp="spotify", account_id=1), fm.feed_top_chart_exit_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.feed_top_chart_exit_message(4, 2, 4, country_code="gb", dsp="spotify", account_id=1), fm.feed_top_chart_major_move_message(3, 1, 3, country_code="us", dsp="apple", account_id=1), fm.feed_top_chart_major_move_message(4, 2, 4, country_code="us", dsp="spotify", account_id=1), fm.feed_top_chart_major_move_message( 3, 1, 3, country_code="us", dsp="apple", account_id=1, move_up=False ), fm.feed_top_chart_major_move_message( 4, 2, 4, country_code="us", dsp="spotify", account_id=1, move_up=False ), ] ), ), ) def test_handler(test_logger, input_messages, expected_result_len, expected_result): from apollo_messages_views.handlers.feed_messages import handler result = handler(input_messages, test_logger, current_dt=dt_now()) assert len(result) == expected_result_len if expected_result is not None: for i, item in enumerate(expected_result): assert result[i] == item