Make customer terms_and_conditions_accepted_at be set to current time

after a successful checkout
This commit is contained in:
Luis Ramos
2020-09-22 19:48:52 +01:00
parent ad592785cf
commit 57a9d6e1e2
3 changed files with 21 additions and 0 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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) }