"""Lambda test module.""" from unittest.mock import call from unittest.mock import patch from content_utils.exceptions import InvalidMessageException from content_utils.exceptions import NoReviewQueueItemDataException import pytest from src import app from src.exceptions import ReviewQueueItemExplicitSkip @patch('src.app.config.app_logger.debug') @patch('src.app.event_handler') def test_handler(mock_handler, mock_logger, mock_single_event): """Test handler function.""" mock_result = {'status': 'complete'} result = app.handler(mock_single_event, None) assert mock_logger.call_args == call(mock_single_event) mock_handler.assert_called_once_with({ 'operation': 'update', 'product_id': 1, 'review_queue_id': 1 }) assert result == mock_result @patch('src.app.config.app_logger.info') @patch('src.app.event_handler') def test_handler_no_records(mock_handler, mock_logger): """Test handler with message containing no records.""" mock_event = {'Records': []} result = app.handler(mock_event, None) assert mock_handler.call_count == 0 mock_logger.assert_called_once_with('SQS has no records') assert result == {'status': 'complete'} @patch('src.app.event_handler') def test_handler_skips_on_specific_exceptions(mock_handler, mock_single_event): """Test handler skips on specific events.""" mock_handler.side_effect = InvalidMessageException('foo') result = app.handler(mock_single_event, None) assert result == {'status': 'complete'} mock_handler.side_effect = NoReviewQueueItemDataException('foo') result = app.handler(mock_single_event, None) assert result == {'status': 'complete'} mock_handler.side_effect = ReviewQueueItemExplicitSkip('foo') result = app.handler(mock_single_event, None) assert result == {'status': 'complete'} @patch('src.app.event_handler') def test_handler_raises_on_other_exceptions(mock_handler, mock_single_event): """Test handler raises on other events.""" mock_handler.side_effect = ValueError('foo') with pytest.raises(ValueError): app.handler(mock_single_event, None) @patch('src.app.event_handler') def test_handler_does_nothing_empty_records(mock_handler): """Test handler does nothing with empty records.""" result = app.handler({'Records': [{}]}, None) assert mock_handler.call_count == 0 assert result == {'status': 'complete'}