"""Unit testcases for app handler.""" from unittest.mock import MagicMock, Mock, patch import pytest import app @patch('app.GenerateFlowthroughAdjustmentsProcessor') @patch('app.SnowflakeSQLExecutor') def test_handler(mock_snowflake, mock_processor, mock_event): """Test handler returns OK when records are generated.""" context = Mock() mock_snowflake.return_value.__enter__.return_value = MagicMock() mock_processor.return_value.process.return_value = 250 result = app.handler(mock_event, context) assert result == {'status': 'OK'} mock_processor.assert_called_once_with(mock_event, mock_snowflake().__enter__()) mock_processor.return_value.process.assert_called_once() @patch('app.GenerateFlowthroughAdjustmentsProcessor') @patch('app.SnowflakeSQLExecutor') def test_handler_no_records(mock_snowflake, mock_processor, mock_event): """Test handler returns NO_RECORDS when no records are generated.""" context = Mock() mock_snowflake.return_value.__enter__.return_value = MagicMock() mock_processor.return_value.process.return_value = 0 result = app.handler(mock_event, context) assert result == {'status': 'NO_RECORDS'} mock_processor.assert_called_once_with(mock_event, mock_snowflake().__enter__()) mock_processor.return_value.process.assert_called_once() @patch('app.SnowflakeSQLExecutor') def test_handler_exception_propagation(mock_snowflake, mock_event): """Test that exceptions are logged and re-raised.""" context = Mock() mock_snowflake.side_effect = Exception('Snowflake Connection Failed') with pytest.raises(Exception) as exc_info: app.handler(mock_event, context) assert 'Snowflake Connection Failed' in str(exc_info.value)