mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-10 03:30:22 +00:00
Make customer terms_and_conditions_accepted_at be set to current time
after a successful checkout
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user