From 67b8a5527306649d3154efd7e05ebfcb3a2ff7f2 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Sun, 5 Dec 2021 10:38:15 +0000 Subject: [PATCH] Separate `OrderCompletionReset` from `Checkout::PostCheckoutActions` and don't pass controller objects to `Checkout::PostCheckoutActions` We need to separate some of these bits to make them easier to call in different contexts. Also there's some weird stuff happening here with the controller being passed in to the service, and it seems like a code smell to me... --- app/controllers/checkout_controller.rb | 3 ++- .../checkout/post_checkout_actions.rb | 3 +-- .../checkout/post_checkout_actions_spec.rb | 21 ++++--------------- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/app/controllers/checkout_controller.rb b/app/controllers/checkout_controller.rb index 7341347f68..e2d470b06f 100644 --- a/app/controllers/checkout_controller.rb +++ b/app/controllers/checkout_controller.rb @@ -220,7 +220,8 @@ class CheckoutController < ::BaseController end def checkout_succeeded - Checkout::PostCheckoutActions.new(@order).success(self, params, spree_current_user) + Checkout::PostCheckoutActions.new(@order).success(params, spree_current_user) + OrderCompletionReset.new(self, @order).call session[:access_token] = current_order.token flash[:notice] = t(:order_processed_successfully) diff --git a/app/services/checkout/post_checkout_actions.rb b/app/services/checkout/post_checkout_actions.rb index c9defcc9ca..f7926f57fb 100644 --- a/app/services/checkout/post_checkout_actions.rb +++ b/app/services/checkout/post_checkout_actions.rb @@ -7,10 +7,9 @@ module Checkout @order = order end - def success(controller, params, current_user) + def success(params, current_user) set_customer_terms_and_conditions_accepted_at(params) save_order_addresses_as_user_default(params, current_user) - OrderCompletionReset.new(controller, @order).call end def failure diff --git a/spec/services/checkout/post_checkout_actions_spec.rb b/spec/services/checkout/post_checkout_actions_spec.rb index 4c5ee6a1c2..17e1edb8e1 100644 --- a/spec/services/checkout/post_checkout_actions_spec.rb +++ b/spec/services/checkout/post_checkout_actions_spec.rb @@ -7,33 +7,20 @@ describe Checkout::PostCheckoutActions do let(:postCheckoutActions) { Checkout::PostCheckoutActions.new(order) } describe "#success" do - let(:controller) {} let(:params) { { order: {} } } let(:current_user) { order.distributor.owner } - let(:reset_order_service) { instance_double(OrderCompletionReset) } - - before do - expect(OrderCompletionReset).to receive(:new). - with(controller, order).and_return(reset_order_service) - expect(reset_order_service).to receive(:call) - end - - it "resets the order" do - postCheckoutActions.success(controller, params, current_user) - end - describe "setting customer terms_and_conditions_accepted_at" do before { order.customer = build(:customer) } it "does not set customer's terms_and_conditions to the current time if terms have not been accepted" do - postCheckoutActions.success(controller, params, current_user) + postCheckoutActions.success(params, current_user) expect(order.customer.terms_and_conditions_accepted_at).to be_nil end it "sets customer's terms_and_conditions to the current time if terms have been accepted" do params = { order: { terms_and_conditions_accepted: true } } - postCheckoutActions.success(controller, params, current_user) + postCheckoutActions.success(params, current_user) expect(order.customer.terms_and_conditions_accepted_at).to_not be_nil end end @@ -50,14 +37,14 @@ describe Checkout::PostCheckoutActions do params[:order][:default_bill_address] = true expect(user_default_address_setter).to receive(:set_default_bill_address) - postCheckoutActions.success(controller, params, current_user) + postCheckoutActions.success(params, current_user) end it "sets user default ship address is option selected in params" do params[:order][:default_ship_address] = true expect(user_default_address_setter).to receive(:set_default_ship_address) - postCheckoutActions.success(controller, params, current_user) + postCheckoutActions.success(params, current_user) end end end