"""Unit testcases for app handler.""" from unittest.mock import MagicMock, Mock, patch import pytest import app @patch('app.AdjustmentsJsonValidationProcessor') @patch('app.SnowflakeSQLExecutor') def test_handler(mock_snowflake, mock_processor, mock_event): """Test handler returns OK when file contains not validation errors.""" 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.AdjustmentsJsonValidationProcessor') @patch('app.SnowflakeSQLExecutor') def test_handler_for_validation_errors(mock_snowflake, mock_processor, mock_event): """Test handler returns FILE_NOT_VALID when file is having validating errors.""" 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': 'FILE_NOT_VALID'} 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)