"""Lambda test module.""" from unittest.mock import patch import src.index as index class LambdaContext: """Lambda context.""" aws_request_id = '1234-1234' @patch('src.index.process_jobs') @patch('src.index.queries.get_connection_limit') @patch('src.index.queries.get_jobs_for_batch_delivery') @patch('src.index.queries.get_jobs_for_nonbatch_delivery') @patch('src.index.call_datadog_with_metric') def test_handler( mock_datadog_connection, mock_get_jobs_for_nonbatch_delivery, mock_get_jobs_for_batch_delivery, mock_get_connection_limit, mock_process_jobs): """Test index.handler function.""" mock_get_connection_limit.return_value = { 'connection_limit': 50, 'current_connections': 0 } mock_get_jobs_for_batch_delivery.return_value = False mock_get_jobs_for_nonbatch_delivery.return_value = False index.handler({'dms_id': 1, 'limit': 1000}, LambdaContext) assert mock_get_jobs_for_nonbatch_delivery.call_count == 1 assert mock_get_jobs_for_batch_delivery.call_count == 1 @patch('src.index.process_jobs') @patch('src.index.queries.get_connection_limit') @patch('src.index.queries.get_jobs_for_batch_delivery') @patch('src.index.queries.get_jobs_for_nonbatch_delivery') @patch('src.index.call_datadog_with_metric') def test_handler_no_connections( mock_datadog_connection, mock_get_jobs_for_nonbatch_delivery, mock_get_jobs_for_batch_delivery, mock_get_connection_limit, mock_process_jobs): """Test index.handler function.""" mock_get_connection_limit.return_value = { 'connection_limit': 0, 'current_connections': 0 } mock_get_jobs_for_batch_delivery.return_value = False mock_get_jobs_for_nonbatch_delivery.return_value = False index.handler({'dms_id': 1, 'limit': 1000}, LambdaContext) assert mock_get_jobs_for_nonbatch_delivery.call_count == 0 assert mock_get_jobs_for_batch_delivery.call_count == 0 @patch('src.index.queries.set_job_to_queued_for_delivery') @patch('src.index.sqs.add_message_to_sqs') @patch('src.index.sqs.format_queue_name') def test_process_jobs(mock_format_queue_name, mock_add_message_to_sqs, mock_queued_for_delivery): """Test index.process_jobs function.""" mock_add_message_to_sqs.return_value = None mock_format_queue_name.return_value = None mock_queued_for_delivery.return_value = 1 results = [{ 'encoding_queue_detail_id': 100, 'priority': 1, 'dms_master_master_id': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 1, 'dms_priority': 1 }, { 'encoding_queue_detail_id': 200, 'priority': 1, 'dms_master_master_id': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 2, 'dms_priority': 1 }, { 'encoding_queue_detail_id': 300, 'priority': 1, 'dms_master_master_id': 1, 'encoding_order_type': 'harddrive', 'encoder_id': 18, 'delivery_batch_id': 3, 'dms_priority': 1 }, { 'encoding_queue_detail_id': 400, 'priority': 2, 'dms_master_master_id': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 4, 'dms_priority': 1 }, { 'encoding_queue_detail_id': 500, 'priority': 1, 'dms_master_master_id': 1, 'encoding_order_type': 'release', 'encoder_id': 20, 'delivery_batch_id': 5, 'dms_priority': 1 }] index.process_jobs(1, results, {'release': 50, 'harddrive': 50}) assert mock_add_message_to_sqs.call_count == 5 def test_process_jobs_data_format(): """Test index.process_jobs_data_format function.""" results = [{ 'encoding_queue_detail_id': 100, 'priority': 1, 'dms_master_master_id': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 1, 'dms_priority': 1 }, { 'encoding_queue_detail_id': 200, 'priority': 1, 'dms_master_master_id': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 2, 'dms_priority': 1 }, { 'encoding_queue_detail_id': 300, 'priority': 1, 'dms_master_master_id': 1, 'encoding_order_type': 'harddrive', 'encoder_id': 18, 'delivery_batch_id': 3, 'dms_priority': 1 }, { 'encoding_queue_detail_id': 400, 'priority': 2, 'dms_master_master_id': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 4, 'dms_priority': 1 }, { 'encoding_queue_detail_id': 500, 'priority': 1, 'dms_master_master_id': 1, 'encoding_order_type': 'release', 'encoder_id': 20, 'delivery_batch_id': 5, 'dms_priority': 1 }] r = index.process_jobs_data_format(results) assert r == { 1: { 'release': { 100: { 'encoder_id': 18, 'delivery_batch_id': 1, 'dms_priority': 1 }, 200: { 'encoder_id': 18, 'delivery_batch_id': 2, 'dms_priority': 1 }, 500: { 'encoder_id': 20, 'delivery_batch_id': 5, 'dms_priority': 1 } }, 'harddrive': { 300: { 'encoder_id': 18, 'delivery_batch_id': 3, 'dms_priority': 1 } } }, 2: { 'release': { 400: { 'encoder_id': 18, 'delivery_batch_id': 4, 'dms_priority': 1 } } } }