Call #credit with right arguments

This commit is contained in:
Maikel Linke
2026-03-13 16:24:41 +11:00
parent 7619062ad2
commit 53c2ef53d5
3 changed files with 36 additions and 5 deletions

View File

@@ -75,10 +75,10 @@ module Spree
ActiveMerchant::Billing::Response.new(success, message)
end
def credit(money, gateway_options)
def credit(money, response_code, gateway_options)
amount = money / 100 # called with cents
payment = gateway_options[:payment]
taler_order = taler_order(id: payment.response_code)
taler_order = taler_order(id: response_code)
status = taler_order.fetch("order_status")
raise "Unsupported action" if status != "paid"

View File

@@ -69,7 +69,7 @@ RSpec.describe Spree::PaymentMethod::Taler do
response_code: "taler-order-8",
)
expect {
response = taler.credit(100, { payment: order.payments[0] })
response = taler.credit(100, "taler-order-8", { payment: order.payments[0] })
expect(response.success?).to eq true
}.to enqueue_mail(PaymentMailer, :refund_available)
end
@@ -85,7 +85,7 @@ RSpec.describe Spree::PaymentMethod::Taler do
response_code: "taler-order-8",
)
expect {
taler.credit(100, { payment: order.payments[0] })
taler.credit(100, "taler-order-8", { payment: order.payments[0] })
}.to raise_error StandardError, "Unsupported action"
end
end

View File

@@ -25,7 +25,7 @@ RSpec.describe "Admin -> Order -> Payments" do
login_as distributor.owner
end
it "allows to refund a Taler payment" do
it "allows to void a Taler payment" do
order_status = {
order_status: "paid",
contract_terms: {
@@ -49,4 +49,35 @@ RSpec.describe "Admin -> Order -> Payments" do
expect(page).not_to have_link "Void"
end
end
it "allows to credit a Taler payment" do
order_status = {
order_status: "paid",
contract_terms: {
amount: "KUDOS:2",
}
}
order_endpoint = "https://taler.example.com/private/orders/taler-id-1"
refund_endpoint = "https://taler.example.com/private/orders/taler-id-1/refund"
stub_request(:get, order_endpoint).to_return(body: order_status.to_json)
stub_request(:post, refund_endpoint).to_return(body: "{}")
visit spree.admin_order_payments_path(order.number)
within row_containing("Taler") do
expect(page).to have_text "COMPLETED"
expect(page).to have_link "Credit"
click_link class: "icon-credit"
expect(page).to have_text "COMPLETED"
expect(page).not_to have_link "Credit"
end
# Our payment system creates a new payment to show the credit.
within row_containing("$-9.75") do
# TODO: don't offer to void a credited amount.
expect(page).to have_link "Void"
end
end
end