From 57a9d6e1e28499dc358b69d9dde7823509f141cf Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Tue, 22 Sep 2020 19:48:52 +0100 Subject: [PATCH] Make customer terms_and_conditions_accepted_at be set to current time after a successful checkout --- .../darkswarm/services/checkout.js.coffee | 1 + app/services/checkout/post_checkout_actions.rb | 5 +++++ .../checkout/post_checkout_actions_spec.rb | 15 +++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/app/assets/javascripts/darkswarm/services/checkout.js.coffee b/app/assets/javascripts/darkswarm/services/checkout.js.coffee index 69c484ccb4..265588cd41 100644 --- a/app/assets/javascripts/darkswarm/services/checkout.js.coffee +++ b/app/assets/javascripts/darkswarm/services/checkout.js.coffee @@ -46,6 +46,7 @@ Darkswarm.factory 'Checkout', ($injector, CurrentOrder, ShippingMethods, StripeE munged_order = default_bill_address: !!@default_bill_address default_ship_address: !!@default_ship_address + terms_and_conditions_accepted: true for name, value of @order # Clone all data from the order JSON object switch name diff --git a/app/services/checkout/post_checkout_actions.rb b/app/services/checkout/post_checkout_actions.rb index f595ab0537..fbd51b7dac 100644 --- a/app/services/checkout/post_checkout_actions.rb +++ b/app/services/checkout/post_checkout_actions.rb @@ -8,6 +8,7 @@ module Checkout end def success(controller, 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 @@ -26,5 +27,9 @@ module Checkout user_default_address_setter.set_default_bill_address if params[:order][:default_bill_address] user_default_address_setter.set_default_ship_address if params[:order][:default_ship_address] end + + def set_customer_terms_and_conditions_accepted_at(params) + @order.customer.update(terms_and_conditions_accepted_at: Time.zone.now) if params[:order][:terms_and_conditions_accepted] + end end end diff --git a/spec/services/checkout/post_checkout_actions_spec.rb b/spec/services/checkout/post_checkout_actions_spec.rb index 916cff69fb..e1a27a20fb 100644 --- a/spec/services/checkout/post_checkout_actions_spec.rb +++ b/spec/services/checkout/post_checkout_actions_spec.rb @@ -23,6 +23,21 @@ describe Checkout::PostCheckoutActions do postCheckoutActions.success(controller, params, current_user) end + describe "setting customer terms_and_conditions_accepted_at" do + before { order.customer = build_stubbed(: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) + 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) + expect(order.customer.terms_and_conditions_accepted_at).to_not be_nil + end + end + describe "setting the user default address" do let(:user_default_address_setter) { instance_double(UserDefaultAddressSetter) }