mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-03 02:21:33 +00:00
Revert "Remove unreachable order recovery code"
This reverts commit 355c5f5c55.
This code is necessary to preserver cart contents across logins on
different browser sessions.
This commit is contained in:
@@ -68,9 +68,18 @@ module Spree
|
||||
session[:guest_token] = nil
|
||||
end
|
||||
|
||||
# Load current order and create a new one if necessary.
|
||||
# Recover incomplete orders from other sessions after logging in.
|
||||
def set_current_order
|
||||
current_order(true) if spree_current_user
|
||||
return unless (user = spree_current_user)
|
||||
|
||||
last_incomplete_order = user.last_incomplete_spree_order
|
||||
|
||||
if session[:order_id].nil? && last_incomplete_order
|
||||
session[:order_id] = last_incomplete_order.id
|
||||
end
|
||||
|
||||
# Load current order and create a new one if necessary.
|
||||
current_order(true)
|
||||
end
|
||||
|
||||
def current_currency
|
||||
|
||||
@@ -28,6 +28,17 @@ describe BaseController, type: :controller do
|
||||
expect(user.orders.count).to eq 1
|
||||
end
|
||||
|
||||
it "uses the last incomplete order" do
|
||||
last_cart = create(:order, user: user, created_by: user, state: "cart", completed_at: nil)
|
||||
allow(controller).to receive(:spree_current_user).and_return(user)
|
||||
|
||||
expect {
|
||||
get :index
|
||||
}.to_not change { Spree::Order.count }
|
||||
|
||||
expect(session[:order_id]).to eq last_cart.id
|
||||
end
|
||||
|
||||
it "ignores the last incomplete order" do
|
||||
# Spree used to merge the last order with the current one.
|
||||
# And we used to override that logic to delete old incomplete orders.
|
||||
|
||||
Reference in New Issue
Block a user