From 560ad49057384d0acdd9eda5abf68d0ccbe67f44 Mon Sep 17 00:00:00 2001 From: Andy Brett Date: Mon, 15 Feb 2021 18:02:47 -0800 Subject: [PATCH] unit tests for ProcessPaymentIntent --- spec/services/process_payment_intent_spec.rb | 51 ++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 spec/services/process_payment_intent_spec.rb diff --git a/spec/services/process_payment_intent_spec.rb b/spec/services/process_payment_intent_spec.rb new file mode 100644 index 0000000000..fdb906c2ea --- /dev/null +++ b/spec/services/process_payment_intent_spec.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe ProcessPaymentIntent do + let(:service) { described_class.new } + + describe "processing a payment intent" do + let(:customer) { create(:customer) } + let(:order) { create(:order, customer: customer, distributor: customer.enterprise, state: "payment") } + let!(:payment) { create( + :payment, + cvv_response_message: "https://stripe.com/redirect", + response_code: "pi_123", + order: order, + state: "pending") + } + + context "an invalid intent" do + let(:invalid_intent) { "invalid" } + let(:service) { ProcessPaymentIntent.new(invalid_intent, order) } + + it "does not complete the payment" do + service.call! + expect(payment.reload.state).to eq("pending") + end + end + + context "a valid intent" do + let(:valid_intent) { "pi_123" } + let(:service) { ProcessPaymentIntent.new(valid_intent, order) } + + before do + allow(order).to receive(:deliver_order_confirmation_email) + end + + it "completes the payment" do + service.call! + payment.reload + expect(payment.state).to eq("completed") + expect(payment.cvv_response_message).to be nil + end + + it "completes the order" do + service.call! + expect(order.state).to eq("complete") + expect(order).to have_received(:deliver_order_confirmation_email) + end + end + end +end