From afb336d7895037c4ed9fdf416323bdd696e66592 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 28 Oct 2024 15:58:21 +1100 Subject: [PATCH] Add spec for fire event "capture_and_complete_order" --- spec/requests/spree/admin/payments_spec.rb | 49 +++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/spec/requests/spree/admin/payments_spec.rb b/spec/requests/spree/admin/payments_spec.rb index c0bd774d07..b4627cc098 100644 --- a/spec/requests/spree/admin/payments_spec.rb +++ b/spec/requests/spree/admin/payments_spec.rb @@ -175,7 +175,7 @@ RSpec.describe Spree::Admin::PaymentsController, type: :request do end end - context "with 'void' parameter" do + context "with 'void' event" do before do allow(Spree::Payment).to receive(:find).and_return(payment) end @@ -219,6 +219,53 @@ RSpec.describe Spree::Admin::PaymentsController, type: :request do end end + context "with 'capture_and_complete_order' event" do + before do + allow(Spree::Payment).to receive(:find).and_return(payment) + end + + it "calls capture_and_complete_order! on payment" do + expect(payment).to receive(:capture_and_complete_order!) + + put( + "/admin/orders/#{order.number}/payments/#{order.payments.first.id}/" \ + "fire?e=capture_and_complete_order", + params: {}, + headers: + ) + end + + it "redirect to payments page" do + allow(payment).to receive(:capture_and_complete_order!).and_return(true) + + put( + "/admin/orders/#{order.number}/payments/#{order.payments.first.id}/" \ + "fire?e=capture_and_complete_order", + params: {}, + headers: + ) + + expect(response).to redirect_to(spree.admin_order_payments_url(order)) + expect(flash[:success]).to eq "Payment Updated" + end + + context "when capture_and_complete_order! fails" do + it "set an error flash message" do + allow(payment).to receive(:capture_and_complete_order!).and_return(false) + + put( + "/admin/orders/#{order.number}/payments/#{order.payments.first.id}/" \ + "fire?e=capture_and_complete_order", + params: {}, + headers: + ) + + expect(response).to redirect_to(spree.admin_order_payments_url(order)) + expect(flash[:error]).to eq "Could not update the payment" + end + end + end + context "when something unexpected happen" do before do allow(Spree::Payment).to receive(:find).and_return(payment)