def test_capture_gateway_error(payment_txn_preauth, monkeypatch): monkeypatch.setattr("saleor.payment.gateways.dummy.dummy_success", lambda: False) with pytest.raises(PaymentError): txn = gateway.capture(payment=payment_txn_preauth, amount=80) assert txn.kind == TransactionKind.CAPTURE assert not txn.is_success assert txn.payment == payment_txn_preauth
def test_capture_success(amount, charge_status, payment_txn_preauth): txn = gateway.capture(payment=payment_txn_preauth, amount=Decimal(amount)) assert txn.is_success assert txn.payment == payment_txn_preauth payment_txn_preauth.refresh_from_db() assert payment_txn_preauth.charge_status == charge_status assert payment_txn_preauth.is_active
def test_gateway_charge_failed(mock_handle_fully_paid_order, mock_get_manager, payment_txn_preauth, dummy_response): txn = payment_txn_preauth.transactions.first() txn.is_success = False payment = payment_txn_preauth amount = payment.total dummy_response.is_success = False dummy_response.kind = TransactionKind.CAPTURE mock_get_manager.capture_payment.return_value = dummy_response with pytest.raises(PaymentError): gateway.capture(payment, amount) mock_get_manager.capture_payment.assert_called_once() payment.refresh_from_db() assert payment.charge_status == ChargeStatus.NOT_CHARGED assert not payment.captured_amount assert not mock_handle_fully_paid_order.called
def test_capture_failed(amount, captured_amount, charge_status, is_active, payment_dummy): payment = payment_dummy payment.is_active = is_active payment.captured_amount = captured_amount payment.charge_status = charge_status payment.save() with pytest.raises(PaymentError): txn = gateway.capture(payment=payment, amount=amount) assert txn is None
def test_capture_payment(mock_payment_interface, payment_txn_preauth): auth_transaction = payment_txn_preauth.transactions.get() PAYMENT_DATA = create_payment_information( payment=payment_txn_preauth, payment_token=auth_transaction.token) mock_payment_interface.capture_payment.return_value = PROCESS_PAYMENT_RESPONSE transaction = gateway.capture(payment=payment_txn_preauth) mock_payment_interface.capture_payment.assert_called_once_with( USED_GATEWAY, PAYMENT_DATA) assert transaction.amount == PROCESS_PAYMENT_RESPONSE.amount assert transaction.kind == TransactionKind.CAPTURE assert transaction.currency == "usd" assert transaction.gateway_response == RAW_RESPONSE
def test_gateway_charge_errors(payment_dummy, transaction_token, settings): payment = payment_dummy gateway.authorize(payment, transaction_token) with pytest.raises(PaymentError) as exc: gateway.capture(payment, Decimal("0")) assert exc.value.message == "Amount should be a positive number." payment.charge_status = ChargeStatus.FULLY_REFUNDED with pytest.raises(PaymentError) as exc: gateway.capture(payment, Decimal("10")) assert exc.value.message == "This payment cannot be captured." payment.charge_status = ChargeStatus.NOT_CHARGED with pytest.raises(PaymentError) as exc: gateway.capture(payment, Decimal("1000000")) assert exc.value.message == ("Unable to charge more than un-captured amount.")