Tidy up #redirect_to_payment_gateway

This commit is contained in:
Matt-Yorkley
2021-12-21 09:49:02 +00:00
parent ef7a02004e
commit f0d54dd083
2 changed files with 9 additions and 6 deletions

View File

@@ -191,17 +191,19 @@ class CheckoutController < ::BaseController
end
def redirect_to_payment_gateway
payment_method_id = params.dig(:order, :payments_attributes, 0, :payment_method_id)
payment_method = Spree::PaymentMethod.find(payment_method_id)
redirect_url = payment_method&.external_payment_url(order: @order)
return if redirect_url.blank?
return unless selected_payment_method.external_gateway?
return unless (redirect_url = selected_payment_method.external_payment_url(order: @order))
render json: { path: redirect_url }, status: :ok
true
end
def selected_payment_method
@selected_payment_method ||= Spree::PaymentMethod.find(
params.dig(:order, :payments_attributes, 0, :payment_method_id)
)
end
def order_error
if @order.errors.present?
@order.errors.full_messages.to_sentence

View File

@@ -423,6 +423,7 @@ describe CheckoutController, type: :controller do
it "should call Stripe redirect and redirect if a path is provided" do
expect(Spree::PaymentMethod).to receive(:find).and_return(payment_method)
expect(payment_method).to receive(:external_gateway?).and_return(true)
expect(payment_method).to receive(:external_payment_url).and_return("test_path")
spree_post :update,