from http import HTTPMethod, HTTPStatus from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair from ...conftest import HttpApiProxy, LambdaContext def test_payment_retries( app, seeds, http_api_proxy: HttpApiProxy, dynamodb_persistence_layer: DynamoDBPersistenceLayer, lambda_context: LambdaContext, ): r = app.lambda_handler( http_api_proxy( raw_path='/orders/4b23f6f5-5377-476b-b1de-79427c0295f6/payment-retries', method=HTTPMethod.POST, body={ 'invoice_id': '123', 'credit_card': { 'holder_name': 'Sergio R Siqueira', 'number': '4111111111111111', 'exp_month': '01', 'exp_year': '2026', 'cvv': '123', }, 'installments': 3, }, ), lambda_context, ) assert r['statusCode'] == HTTPStatus.CREATED r = dynamodb_persistence_layer.collection.get_items( KeyPair('4b23f6f5-5377-476b-b1de-79427c0295f6', 'TRANSACTION') + KeyPair( '4b23f6f5-5377-476b-b1de-79427c0295f6', 'TRANSACTION#STATS', rename_key='stats', ) ) assert r['credit_card']['number'] == '4111111111111111' assert 'last_attempt_succeeded' not in r['stats']