From 37177e720774afc586f5d1e12d5eb23cb2aa1463 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Fri, 14 May 2021 15:12:47 +0100 Subject: [PATCH] Add test coverage to StripeSCA spec --- spec/models/spree/gateway/stripe_sca_spec.rb | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/spec/models/spree/gateway/stripe_sca_spec.rb b/spec/models/spree/gateway/stripe_sca_spec.rb index 8ddfe99373..3eea62c02d 100644 --- a/spec/models/spree/gateway/stripe_sca_spec.rb +++ b/spec/models/spree/gateway/stripe_sca_spec.rb @@ -50,6 +50,35 @@ describe Spree::Gateway::StripeSCA, type: :model do expect(response.success?).to eq false expect(response.message).to eq "Invalid payment state: succeeded" end + + context "when payment intent state is not in 'requires_capture' state" do + before do + payment + end + + it "succeeds if payment intent state is requires_capture" do + stub_request(:post, "https://api.stripe.com/v1/payment_intents/12345/capture"). + with(body: {"amount_to_capture" => order.total}). + to_return(status: 200, body: capture_successful) + + allow(Stripe::PaymentIntentValidator).to receive_message_chain(:new, :call). + and_return(double(status: "requires_capture")) + + response = subject.purchase(order.total, credit_card, gateway_options) + + expect(response.success?).to eq true + end + + it "does not succeed if payment intent state is not requires_capture" do + allow(Stripe::PaymentIntentValidator).to receive_message_chain(:new, :call). + and_return(double(status: "not_ready_yet")) + + response = subject.purchase(order.total, credit_card, gateway_options) + + expect(response.success?).to eq false + expect(response.message).to eq "Invalid payment state: not_ready_yet" + end + end end def payment_intent(amount, status)