"""Test handler.""" import tempfile from unittest.mock import MagicMock from unittest.mock import patch from src import app @patch('src.app.get_current_logger') @patch('src.app.metrics.call_datadog_with_metric') @patch('src.app.close_batch') @patch('src.app.queries.update_batch_status') def test_handler( mock_update_batch_status, mock_close_batch, mock_datadog, mock_current_logger): """Test the main handler.""" mock_logger = MagicMock(name='debug') mock_current_logger.return_value = mock_logger mock_datadog.return_value = None mock_update_batch_status.return_value = True mock_event = { 'Records': [{ 'body': '{"batch_id": 1}', 'receiptHandle': 'abc123' }]} class LambdaContext: aws_request_id = '1234-1234' app.handler(mock_event, LambdaContext) mock_update_batch_status.assert_called_with( 'queued_for_closing', 'in-flight', 1, conn_info={ 'user': None, 'password': None, 'host': None, 'port': 3306, 'database': None, 'connect_timeout': 15 }) assert mock_close_batch.called @patch('src.app.queries.get_batch_info') def test_get_batch_info_with_result(mock_get_batch_info): """Test get_batch_info with result.""" mock_get_batch_info.return_value = [ { 'dms_master_master_id': 1, 'order_type': 'release', 'remote_folder': '20190513_1620', 'encoding_queue_detail_id': 1, 'upc': 3452345234523, 'meta_update': 'Y', }, { 'dms_master_master_id': 1, 'order_type': 'release', 'remote_folder': '20190513_1620', 'encoding_queue_detail_id': 2, 'upc': 3452345234234, 'meta_update': 'N', } ] assert app.get_batch_info(1) == { 'batch_id': 1, 'dms_id': 1, 'order_type': 'release', 'remote_folder': '20190513_1620', 'delivered_upcs': [ { 'eqd_id': 1, 'upc': 3452345234523, 'meta_update': True, }, { 'eqd_id': 2, 'upc': 3452345234234, 'meta_update': False, } ] } @patch('src.app.get_current_logger') @patch('src.app.queries.get_batch_info') @patch('src.app.queries.close_delivery_batch') def test_get_batch_info_with_no_result( mock_close_delivery_batch, mock_get_batch_info, mock_logger): """Test get_batch_info no result.""" mock_log = MagicMock(name='info') mock_logger.return_value = mock_log mock_get_batch_info.return_value = None result = app.get_batch_info(1) assert mock_log.info.called assert mock_close_delivery_batch.called assert not result @patch('src.app.utils') def test_generate_local_file(mock_utils=MagicMock(name='write_file_to_disk')): """Test generate_local_file.""" file_list = [] app.generate_local_file( file_list, '/20190513_1620', {'dms_id': 1, 'batch_id': 1}, 'delivery.complete', '') assert mock_utils.write_file_to_disk.called assert file_list == [{ 'local': '{}/1_1_delivery.complete'.format(tempfile.gettempdir()), 'remote': '/20190513_1620/delivery.complete' }]