"""Unit tests for the Lambda handler.""" from unittest.mock import patch import pytest from src import app def test_handler_builds_payload_and_saves_results(mock_event: dict) -> None: """Handler builds the score_history payload and saves it via logic.""" with patch( "src.app.logic.save_auto_approval_results", ) as mock_save: result = app.handler(mock_event, None) assert result == {"status": "ok"} mock_save.assert_called_once_with( mock_event["data"]["review_queue_id"], { "validation_result": "fail", "failed_validations": {}, "auto_approved": True, "confidence_score": None, "score_reasoning": None, "score_version": None, }, ) def test_handler_auto_approved_true_regardless_of_response_contents( mock_event: dict, ) -> None: """auto_approved is True whenever AutoapproveTaskResponse is present.""" mock_event["AutoapproveTaskResponse"] = {"some": "payload"} with patch("src.app.logic.save_auto_approval_results") as mock_save: app.handler(mock_event, None) assert mock_save.call_args.args[1]["auto_approved"] is True def test_handler_auto_approved_false_when_missing(mock_event: dict) -> None: """auto_approved is False when AutoapproveTaskResponse is absent.""" del mock_event["AutoapproveTaskResponse"] with patch("src.app.logic.save_auto_approval_results") as mock_save: app.handler(mock_event, None) assert mock_save.call_args.args[1]["auto_approved"] is False def test_handler_raises_on_missing_review_queue_id() -> None: """Handler raises KeyError when review_queue_id is absent from data.""" event = {"data": {}} with pytest.raises(KeyError): app.handler(event, None) def test_handler_reraises_logic_exceptions(mock_event: dict) -> None: """Failures from logic.save_auto_approval_results bubble up to the caller.""" with patch( "src.app.logic.save_auto_approval_results", side_effect=RuntimeError("boom"), ): with pytest.raises(RuntimeError, match="boom"): app.handler(mock_event, None)