Merge pull request #3126 from mkllnk/2841-convert-guest-customer

2841  Associate customers with their user records
This commit is contained in:
Maikel
2018-11-26 13:56:31 +11:00
committed by GitHub
2 changed files with 43 additions and 1 deletions

View File

@@ -0,0 +1,42 @@
# When we introduced the Customer model, we didn't associate any existing
# customers with users that have the same email address.
# Later we decided to create that association when users sign up. But we didn't
# update all the existing customers. We do that now for data consistency and to
# solve several bugs.
#
# - https://github.com/openfoodfoundation/openfoodnetwork/pull/2084
# - https://github.com/openfoodfoundation/openfoodnetwork/issues/2841
class AssociateCustomersToUsers < ActiveRecord::Migration
class Customer < ActiveRecord::Base
end
def up
save_customers
execute "UPDATE customers
SET user_id = spree_users.id
FROM spree_users
WHERE customers.email = spree_users.email
AND customers.user_id IS NULL;"
end
def down
customers = backed_up_customers
Customer.where(id: customers).update_all(user_id: nil)
end
def save_customers
customers = Customer.
joins("INNER JOIN spree_users ON customers.email = spree_users.email").
where(user_id: nil).all
File.write(backup_file, Marshal.dump(customers))
end
def backed_up_customers
Marshal.load(File.read(backup_file))
end
def backup_file
File.join("log", "customers_without_user_association.log")
end
end

View File

@@ -13,7 +13,7 @@ module ShopWorkflow
end
def set_order(order)
ApplicationController.any_instance.stub(:session).and_return({order_id: order.id, access_token: order.token})
allow_any_instance_of(ApplicationController).to receive(:session).and_return({order_id: order.id, access_token: order.token})
end
def add_product_to_cart(order, product, quantity: 1)