"""Test handler.""" import json from unittest.mock import ( MagicMock, patch) import index @patch('index.s3') @patch('index.get_current_logger') @patch('index.convert_file_to_dict') @patch('index.graphql_gateway') @patch('index.datetime') @patch.object(index.config, 'OA_USER', 'oa:0') def test_handler(mock_datetime, mock_graphql, mock_file_to_dict, mock_get_logger, mock_s3, test_data_rows, test_event): """Test handler.""" expected_items = [ 'proj01_____prod01', 'proj02_____prod02' ] mock_datetime.now.return_value.isoformat.return_value =\ '2023-05-09T10:15:16.136767' # Mock logger calls mock_logger = MagicMock() mock_get_logger.return_value = mock_logger # Mock S3 head op mock_s3.head_object.return_value = { 'ContentType': 'test/data' } # Mock CSV conversion mock_file_to_dict.return_value = test_data_rows # Call handler response = index.handler(test_event, {}) # Assert correlation and user passsed to Graphqlheaders mock_graphql.set_headers.assert_called_once_with({ 'Orchard-User-Id': 'oa:0', 'Correlation-Id': 'test-12345-correlation' }) # Assert Call counts assert mock_logger.info.call_count == 3 assert mock_logger.error.call_count == 0 # Assert response shape assert response == { 'key': 'generated_json/key_name_2023-05-09T10-15-16.json', 'bucket': 'bucket_name', 'orig_key': 'bulk-metadata/test_inputs/key_name.csv', 'items': expected_items, 'execution_name': 'test_exec', 'state_machine_name': 'state_machine', 'correlation_id': 'test-12345-correlation' } @patch('index.s3') @patch('index.get_current_logger') @patch('index.convert_file_to_dict') @patch('index.graphql_gateway') @patch('index.datetime') @patch.object(index.config, 'OA_USER', 'oa:0') def test_handler_2(mock_datetime, mock_graphql, mock_file_to_dict, mock_get_logger, mock_s3, test_data_rows, test_event, convert_file_to_dict_return): """Test handler.""" expected_items = [ '7892920192100_____1397102', '7892920192308_____1405286', '7892920192407_____1412424', '7892920192506_____1413083', '7892920192605_____1420367', '7892920192704_____1428527', '7892920192803_____1428885', '7892920192902_____1438952', '7892920191905_____1386602', '7892920192001_____1391120', '7892920192209_____1392734' ] mock_datetime.now.return_value.isoformat.return_value =\ '2023-05-09T10:15:16.136767' # Mock logger calls mock_logger = MagicMock() mock_get_logger.return_value = mock_logger # Mock S3 head op mock_s3.head_object.return_value = { 'ContentType': 'test/data' } # Mock CSV conversion mock_file_to_dict.return_value = convert_file_to_dict_return # Call handler response = index.handler(test_event, {}) # Assert correlation and user passsed to Graphqlheaders mock_graphql.set_headers.assert_called_once_with({ 'Orchard-User-Id': 'oa:0', 'Correlation-Id': 'test-12345-correlation' }) # Assert Call counts assert mock_logger.info.call_count == 3 assert mock_logger.error.call_count == 0 # Assert response shape assert response == { 'key': 'generated_json/key_name_2023-05-09T10-15-16.json', 'bucket': 'bucket_name', 'orig_key': 'bulk-metadata/test_inputs/key_name.csv', 'items': expected_items, 'execution_name': 'test_exec', 'state_machine_name': 'state_machine', 'correlation_id': 'test-12345-correlation' } @patch('index.s3') @patch('index.get_current_logger') @patch('index.config.GraphQLConnector') @patch('index.read_s3_file_to_dataframe') def test_file_to_dict_csv(mock_get_dataframe, mock_graphql, mock_get_logger, mock_s3, bulk_csv_dataframe_short, bulk_json_short): """Test CSV conversion.""" # Local fixtures bucket = 'bucket' key = 'key' # Mock logger calls mock_logger = MagicMock() mock_get_logger.return_value = mock_logger # Mock CSV load mock_get_dataframe.return_value = bulk_csv_dataframe_short # Run method response = index.convert_file_to_dict(bucket, key, MagicMock()) assert json.dumps(response) == json.dumps(bulk_json_short) @patch('index.s3') @patch('index.get_current_logger') @patch('index.config.GraphQLConnector') @patch('index.read_s3_file_to_dataframe') def test_file_to_dict_xlsx(mock_get_dataframe, mock_graphql, mock_get_logger, mock_s3, bulk_xlsx_dataframe_short, bulk_json_short): """Test CSV conversion.""" # Local fixtures bucket = 'bucket' key = 'key' # Mock logger calls mock_logger = MagicMock() mock_get_logger.return_value = mock_logger # Mock XLSX load mock_get_dataframe.return_value = bulk_xlsx_dataframe_short # Run method response = index.convert_file_to_dict(bucket, key, MagicMock()) assert json.dumps(response) == json.dumps(bulk_json_short)