"""Lambda test module.""" from unittest.mock import call from unittest.mock import patch from src import app import pytest @patch('src.app.content_lambda_logger') @patch('src.app.event_processing') def test_handler( mock_event_processing, mock_content_lambda_logger, mock_msk_message ): """Test handler.""" mock_results = [ { 'message': 'foo', 'review_queue_id': 4, 'product_id': 1, 'status': 'success' }, { 'message': 'bar', 'product_id': 2, 'status': 'skip' }, { 'message': 'hello xyz', 'product_id': 3, 'status': 'skip' } ] mock_event_processing.process_event.side_effect = mock_results app.handler(mock_msk_message, None) assert mock_event_processing.process_event.call_count == 3 assert mock_content_lambda_logger.start.call_count == 3 assert mock_content_lambda_logger.end.call_count == 3 assert mock_content_lambda_logger.set_data.mock_calls == [ call(status='success', product_id=1, queue_id=4, result='foo'), call(status='skip', product_id=2, queue_id=None, result='bar'), call(status='skip', product_id=3, queue_id=None, result='hello xyz') ] @patch('src.app.content_lambda_logger') @patch('src.app.event_processing') def test_handler_error( mock_event_processing, mock_content_lambda_logger, mock_create_event ): """Test process_cdc_event error retries.""" mock_event_processing.process_event.return_value = { 'message': 'foo', 'product_id': 2, 'status': 'error' } with pytest.raises(Exception): app.handler(mock_create_event, None) assert mock_event_processing.process_event.call_count == 1 assert mock_content_lambda_logger.set_data.mock_calls == [ call(status='error', product_id=2, queue_id=None, result='foo') ] @patch('src.app.content_lambda_logger') @patch('src.app.event_processing') def test_empty_event( mock_event_processing, mock_content_lambda_logger, mock_broken_event ): """Test handler empty event.""" app.handler(mock_broken_event, None) assert mock_event_processing.process_event.call_count == 0 assert mock_content_lambda_logger.start.call_count == 1 assert mock_content_lambda_logger.end.call_count == 1