92 lines
2.9 KiB
Python
92 lines
2.9 KiB
Python
from decimal import Decimal
|
|
|
|
import requests
|
|
from aws_lambda_powertools.utilities.typing.lambda_context import LambdaContext
|
|
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
|
|
|
|
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['secure_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'
|
|
)
|