import pytest import constants from conftest import add_order_json_file_to_s3 from utils.db_objects.art_relations import EncodingOrder LAMBDA_NAME = constants.LAMBDA_VECTOR_SAVE_TO_DD_DB DIRECT_DELIVERY_DATABASE = 'dd' S3_BUCKET = constants.S3_ORCHBUCKET PRODUCT_ID = 884385034672 STORE_ID = 1223 @pytest.mark.parametrize('alchemy_db', ['art_relations'], indirect=True) def test_vector_save_to_dd_db(alchemy_db, current_datetime, s3_handler, lambda_client, cloudwatch_log_handler): """Test vector_save_to_dd_db lambda saves data to dddb \n https://www.notion.so/Obtain-Flow- 297cd35c20ff4c41b7e7e484cef9a399?pvs=4#90f5115a40f8473ba70eb4edb0def271""" encoding_order = EncodingOrder(2, 18, current_datetime, STORE_ID, 'track') eo = alchemy_db.encoding_order.insert_encoding_order(encoding_order) eo_id = eo.encoding_order_id print(eo_id) add_order_json_file_to_s3(s3_handler, encoding_order, current_datetime, PRODUCT_ID, STORE_ID, S3_BUCKET) # Delete already existing encoding order from dd_db in case the dbs are out # of sync alchemy_db.select_database(DIRECT_DELIVERY_DATABASE) alchemy_db.encoding_queue.delete_encoding_queue_data_if_exists(eo_id) lambda_event = { 'order_id': {'S': f'{encoding_order.encoding_order_id}'}, 'created_at': {'S': f'{current_datetime}'}, 'priority': {'N': encoding_order.priority}, 'encoder_id': {'N': encoding_order.encoder_id}, 'meta_update': {'S': encoding_order.meta_update}, 'user_id': {'N': encoding_order.orchadmin_user_id}, 's3_key': {'S': f'vector3/vector-orders/{eo_id}.json'}, 's3_bucket_name': {'S': f'{S3_BUCKET}'}, } lambda_client.invoke(LAMBDA_NAME, lambda_event) cloudwatch_log_handler.assert_lambda_logs_message( LAMBDA_NAME, f"'order_id': {{'S': '{eo_id}'}}") cloudwatch_log_handler.assert_lambda_logs_message( LAMBDA_NAME, "Saving order details to DD") alchemy_db.encoding_queue.assert_direct_delivery_order(encoding_order, PRODUCT_ID, STORE_ID)