import pytest from tests.data.base import dt_now from tests.data.events import create_raw_event, pack_events, EventView @pytest.mark.parametrize( "input_event,expected_result_len,expected_result", ( ( pack_events([ create_raw_event(1, EventView.FEED), # outdated create_raw_event(2, EventView.FEED, ttl=5) ]), 1, None ), ( pack_events([ create_raw_event(1, EventView.PUSH), # unsupported code create_raw_event(2, EventView.FEED), create_raw_event(3, EventView.FEED, exclude=("code",)) ]), 1, None ), ( pack_events([ create_raw_event(1, EventView.FEED), # unsupported holder create_raw_event(2, EventView.FEED, app="unsupported"), create_raw_event(3, EventView.FEED, exclude=("app",)), ]), 1, None ), ( pack_events([ create_raw_event(1, EventView.FEED, exclude=("id",)), # invalid data create_raw_event(2, EventView.FEED, exclude=("ttl",)), ]), 0, None ), ( pack_events([ create_raw_event(1, EventView.FEED, exclude=("meta.subject",)), # invalid data create_raw_event(2, EventView.FEED, extra={"meta.type": "juno_filter"}), ]), 0, None ), ( pack_events([create_raw_event(i, EventView.FEED) for i in range(1, 3)]), 2, [ create_raw_event(i, EventView.FEED, exclude=("publisher", "external_id", "created_at")) for i in range(1, 3) ] ), ), ) def test_parse_raw_input(test_logger, input_event, expected_result_len, expected_result): from apollo_messages_views.utils.input import parse_raw_input result = parse_raw_input(test_logger, input_event, current_dt=dt_now()) assert len(result) == expected_result_len if expected_result is not None: for i, item in enumerate(expected_result): result_item = result[i] assert result_item.pop("created_at") is not None assert result[i] == item