From 934f4f278e8f7acd253b7461fcedfb8385d52808 Mon Sep 17 00:00:00 2001 From: Andy Brett Date: Tue, 15 Dec 2020 12:24:38 -0800 Subject: [PATCH] add spec to subscription confirm job --- spec/jobs/subscription_confirm_job_spec.rb | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/spec/jobs/subscription_confirm_job_spec.rb b/spec/jobs/subscription_confirm_job_spec.rb index 78c0e9cda8..4eff7c9b61 100644 --- a/spec/jobs/subscription_confirm_job_spec.rb +++ b/spec/jobs/subscription_confirm_job_spec.rb @@ -134,6 +134,48 @@ describe SubscriptionConfirmJob do expect(job).to receive(:record_order) end + context "when Stripe payments need to be processed" do + let(:charge_response_mock) do + { status: 200, body: JSON.generate(id: "ch_1234", object: "charge", amount: 2000) } + end + + before do + allow(order).to receive(:payment_required?) { true } + expect(job).to receive(:setup_payment!) { true } + stub_request(:post, "https://api.stripe.com/v1/charges") + .with(body: /amount/) + .to_return(charge_response_mock) + end + + context "Stripe SCA" do + let(:stripe_sca_payment_method) { create(:stripe_sca_payment_method) } + let(:stripe_sca_payment) { create(:payment, amount: 10, payment_method: stripe_sca_payment_method) } + + before do + allow(order).to receive(:pending_payments) { [stripe_sca_payment] } + expect(stripe_sca_payment_method).to receive(:charge_offline) + end + + it "runs the charges in offline mode" do + job.send(:confirm_order!, order) + end + end + + context "Stripe Connect" do + let(:stripe_connect_payment_method) { create(:stripe_connect_payment_method) } + let(:stripe_connect_payment) { create(:payment, amount: 10, payment_method: stripe_connect_payment_method) } + + before do + allow(order).to receive(:pending_payments) { [stripe_connect_payment] } + expect(stripe_connect_payment_method).to receive(:charge_offline) + end + + it "runs the charges in offline mode" do + job.send(:confirm_order!, order) + end + end + end + context "when payments need to be processed" do let(:payment_method) { create(:payment_method) } let(:payment) { create(:payment, amount: 10) }