Files
saladeaula.digital/orders-events/tests/events/payments/test_create_invoice.py

126 lines
3.8 KiB
Python

from decimal import Decimal
import requests
from aws_lambda_powertools.utilities.typing.lambda_context import LambdaContext
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair, SortKey, TransactKey
import events.payments.create_invoice as app
from ...test_iugu import MockResponse
order_id = '121c1140-779d-4664-8d99-4a006a22f547'
def _event(payment_method: str) -> dict:
return {
'detail': {
'new_image': {
'id': order_id,
'sk': '0',
'total': Decimal(' 267.3'),
'name': 'Beta Educação',
'payment_method': payment_method,
'create_date': '2026-01-07T19:07:49.272967-03:00',
'due_date': '2026-01-12T00:35:44.897447-03:00',
'coupon': '10OFF',
'discount': Decimal('-29.7'),
'updated_at': '2026-01-07T19:07:51.512605-03:00',
'tenant_id': 'cJtK9SsnJhKPyxESe7g3DG',
'email': 'org+15608435000190@users.noreply.saladeaula.digital',
'org_id': 'cJtK9SsnJhKPyxESe7g3DG',
'cnpj': '15608435000190',
'status': 'PENDING',
'subtotal': Decimal('297'),
}
}
}
def test_create_bank_slip_invoice(
monkeypatch,
dynamodb_seeds,
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
lambda_context: LambdaContext,
):
monkeypatch.setattr(
requests,
'post',
lambda *args, **kwargs: MockResponse(
'tests/samples/iugu_invoice_bank_slip.json'
),
)
assert app.lambda_handler(_event('BANK_SLIP'), lambda_context) # type: ignore
invoice = dynamodb_persistence_layer.get_item(KeyPair(order_id, 'INVOICE'))
assert (
invoice['secure_url']
== 'https://checkout.iugu.com/invoices/16f7aa3d-2e0b-41e9-987b-1dc95b957456-d7a2'
)
assert invoice['invoice_id'] == '16f7aa3d-2e0b-41e9-987b-1dc95b957456-d7a2'
assert (
invoice['bank_slip']['bank_slip_url']
== 'https://boletos.iugu.com/v1/public/invoice/16f7aa3d-2e0b-41e9-987b-1dc95b957456-d7a2/bank_slip'
)
def test_create_bank_slip_pix(
monkeypatch,
dynamodb_seeds,
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
lambda_context: LambdaContext,
):
monkeypatch.setattr(
requests,
'post',
lambda *args, **kwargs: MockResponse('tests/samples/iugu_invoice_pix.json'),
)
assert app.lambda_handler(_event('PIX'), lambda_context) # type: ignore
invoice = dynamodb_persistence_layer.get_item(KeyPair(order_id, 'INVOICE'))
assert (
invoice['pix']['qrcode_text']
== 'http://faturas.iugu.com/iugu_pix/970cb579-c396-4e59-a323-ce61ae04f7bc-196c/test/pay'
)
assert (
invoice['pix']['qrcode_text']
== 'http://faturas.iugu.com/iugu_pix/970cb579-c396-4e59-a323-ce61ae04f7bc-196c/test/pay'
)
def test_create_credit_card(
monkeypatch,
dynamodb_seeds,
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
lambda_context: LambdaContext,
):
monkeypatch.setattr(
requests,
'post',
lambda *args, **kwargs: MockResponse(
'tests/samples/iugu_invoice_credit_card.json'
),
)
assert app.lambda_handler(_event('CREDIT_CARD'), lambda_context) # type: ignore
invoice = dynamodb_persistence_layer.collection.get_items(
TransactKey(order_id)
+ SortKey('0')
+ SortKey('INVOICE')
+ SortKey('TRANSACTION')
)
print(invoice)
# assert (
# invoice['pix']['qrcode_text']
# == 'http://faturas.iugu.com/iugu_pix/970cb579-c396-4e59-a323-ce61ae04f7bc-196c/test/pay'
# )
# assert (
# invoice['pix']['qrcode_text']
# == 'http://faturas.iugu.com/iugu_pix/970cb579-c396-4e59-a323-ce61ae04f7bc-196c/test/pay'
# )