def test_update_actions(client):
    payment = client.payments.create(
        types.PaymentDraft(
            key="test-payment",
            amount_planned=types.Money(cent_amount=2000, currency_code="GBP"),
            payment_method_info=types.PaymentMethodInfo(
                payment_interface="ADYEN", method="mc"
            ),
            transactions=[
                types.TransactionDraft(
                    type=types.TransactionType.CHARGE,
                    amount=types.Money(cent_amount=2000, currency_code="GBP"),
                    state=types.TransactionState.PENDING,
                )
            ],
        )
    )

    existing_transaction = payment.transactions[0]

    payment = client.payments.update_by_id(
        payment.id,
        payment.version,
        actions=[
            types.PaymentAddInterfaceInteractionAction(
                fields=types.FieldContainer({"pspRef": "1337"})
            ),
            types.PaymentChangeTransactionInteractionIdAction(
                transaction_id=existing_transaction.id, interaction_id="1337"
            ),
            types.PaymentAddTransactionAction(
                transaction=types.TransactionDraft(
                    type=types.TransactionType.CHARGE,
                    amount=types.Money(currency_code="GBP", cent_amount=1000),
                    interaction_id="123",
                    state=types.TransactionState.INITIAL,
                )
            ),
            types.PaymentChangeTransactionStateAction(
                transaction_id=existing_transaction.id,
                state=types.TransactionState.SUCCESS,
            ),
        ],
    )

    assert payment.interface_interactions[0].fields == {"pspRef": "1337"}
    assert payment.transactions[0].interaction_id == "1337"
    assert len(payment.transactions) == 2
    assert payment.transactions[0].state == types.TransactionState.SUCCESS
Example #2
0
 def post_load(self, data, **kwargs):
     del data["action"]
     return types.PaymentChangeTransactionStateAction(**data)
Example #3
0
def test_update_actions(client):
    custom_type = client.types.create(
        types.TypeDraft(
            name=types.LocalizedString(en="myType"),
            key="payment-info",
            resource_type_ids=[types.ResourceTypeId.PAYMENT_INTERFACE_INTERACTION],
            field_definitions=[
                types.FieldDefinition(
                    type=types.CustomFieldStringType(),
                    name="operations",
                    label=types.LocalizedString(en="Operation"),
                    required=False,
                )
            ],
        )
    )

    payment = client.payments.create(
        types.PaymentDraft(
            key="test-payment",
            amount_planned=types.Money(cent_amount=2000, currency_code="GBP"),
            payment_method_info=types.PaymentMethodInfo(
                payment_interface="ADYEN", method="mc"
            ),
            transactions=[
                types.TransactionDraft(
                    type=types.TransactionType.CHARGE,
                    amount=types.Money(cent_amount=2000, currency_code="GBP"),
                    state=types.TransactionState.PENDING,
                )
            ],
        )
    )

    existing_transaction = payment.transactions[0]

    payment = client.payments.update_by_id(
        payment.id,
        payment.version,
        actions=[
            types.PaymentAddInterfaceInteractionAction(
                type=types.TypeResourceIdentifier(id=custom_type.id),
                fields=types.FieldContainer({"pspRef": "1337"}),
            ),
            types.PaymentChangeTransactionInteractionIdAction(
                transaction_id=existing_transaction.id, interaction_id="1337"
            ),
            types.PaymentAddTransactionAction(
                transaction=types.TransactionDraft(
                    type=types.TransactionType.CHARGE,
                    amount=types.Money(currency_code="GBP", cent_amount=1000),
                    interaction_id="123",
                    state=types.TransactionState.INITIAL,
                )
            ),
            types.PaymentChangeTransactionStateAction(
                transaction_id=existing_transaction.id,
                state=types.TransactionState.SUCCESS,
            ),
        ],
    )

    assert payment.interface_interactions[0].fields == {"pspRef": "1337"}
    assert payment.transactions[0].interaction_id == "1337"
    assert len(payment.transactions) == 2
    assert payment.transactions[0].state == types.TransactionState.SUCCESS