from unittest import mock import marshmallow as ma import pytest from index import handler @mock.patch("index.run") def test_handler_passes_event_fields_to_run(mock_run: mock.MagicMock) -> None: mock_run.return_value = {"report_run_id": 7} event = { "target_type": "statement_period_id", "target_id": 101, "requestor_identity_uuid": "967a08da-e7ba-4f38-a732-1c837bf28fa1", } result = handler(event, mock.MagicMock()) assert result == {"report_run_id": 7} mock_run.assert_called_once_with(101, "967a08da-e7ba-4f38-a732-1c837bf28fa1") @pytest.mark.parametrize( "missing_field", ["target_type", "target_id", "requestor_identity_uuid"], ) def test_handler_rejects_event_missing_required_field(missing_field: str) -> None: event = { "target_type": "statement_period_id", "target_id": 101, "requestor_identity_uuid": "967a08da-e7ba-4f38-a732-1c837bf28fa1", } event.pop(missing_field) with pytest.raises(ma.ValidationError) as exc_info: handler(event, mock.MagicMock()) assert missing_field in exc_info.value.messages