mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
unit tests for ProcessPaymentIntent
This commit is contained in:
51
spec/services/process_payment_intent_spec.rb
Normal file
51
spec/services/process_payment_intent_spec.rb
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user