"""Test copy_assets_to_asheville handler.""" from unittest.mock import ANY, call, patch import index from constants import graphql_queries, sql_queries @patch('index.sqs') @patch('index.secrets_manager_client') @patch('index.config.graphql_gateway') @patch('index.run_rds_query') def test_handler( mock_run_rds_query, mock_graphql_gateway, mock_secrets_manager, mock_sqs): """Test the handler.""" upc_1 = '196925302166' upc_2 = '196925302401' queue_name = 'sqs_queue_name' mock_sqs.format_queue_name.return_value = queue_name mock_run_rds_query.return_value = [ {'upc': upc_1}, {'upc': upc_2}, ] mock_graphql_gateway.execute.return_value = { 'data': { 'productByUpc': { 'productId': 123, 'project': {'projectId': 456}, } } } index.handler({}, None) mock_secrets_manager.get_cred.assert_called() graphql_calls = mock_graphql_gateway.execute.call_args_list assert graphql_calls == [ call(graphql_queries.GET_PRODUCT_BY_UPC, {'upc': upc_1}), call(graphql_queries.GET_PRODUCT_BY_UPC, {'upc': upc_2}), ] mock_sqs.format_queue_name.assert_called() mock_sqs.add_messages_to_sqs.assert_called_with( queue_name, [ '{"project_id": 456, "product_id": 123, "upc": "196925302166", "physical_location_id": 7}', # noqa: E501 '{"project_id": 456, "product_id": 123, "upc": "196925302401", "physical_location_id": 7}', # noqa: E501 ] ) rds_calls = mock_run_rds_query.call_args_list assert rds_calls == [ call(ANY, ANY, ANY, ANY, ANY, sql_queries.SELECT_UPC_N_ROWS, 60), call(ANY, ANY, ANY, ANY, ANY, sql_queries.UPDATE_ROW_ASSET_COPY_STARTED, upc_1), call(ANY, ANY, ANY, ANY, ANY, sql_queries.UPDATE_ROW_ASSET_COPY_STARTED, upc_2), ] @patch('index.sqs') @patch('index.log_error') @patch('index.secrets_manager_client') @patch('index.config.graphql_gateway') @patch('index.run_rds_query') def test_handler_graphql_exception( mock_run_rds_query, mock_graphql_gateway, mock_secrets_manager, mock_log_error, mock_sqs): """Test the handler.""" upc_1 = '196925302166' upc_2 = '196925302401' mock_run_rds_query.return_value = [ {'upc': upc_1}, {'upc': upc_2}, ] mock_graphql_gateway.execute.side_effect = [ Exception(), { 'data': { 'productByUpc': { 'productId': 321, 'project': {'projectId': 456}, } } } ] index.handler({}, None) mock_secrets_manager.get_cred.assert_called() mock_log_error.assert_called_once() graphql_calls = mock_graphql_gateway.execute.call_args_list assert graphql_calls == [ call(graphql_queries.GET_PRODUCT_BY_UPC, {'upc': upc_1}), call(graphql_queries.GET_PRODUCT_BY_UPC, {'upc': upc_2}), ] @patch('index.log_error') @patch('index.secrets_manager_client') @patch('index.config.graphql_gateway') @patch('index.run_rds_query') def test_handler_db_exception( mock_run_rds_query, mock_graphql_gateway, mock_secrets_manager, mock_log_error): """Test the handler.""" mock_run_rds_query.side_effect = [ Exception() ] index.handler({}, None) mock_log_error.assert_called_once() mock_graphql_gateway.execute.assert_not_called()