From 9dbba35019b7f8df2a0759c697ebbf0bf14f2c3e Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 14 Sep 2022 15:44:45 +1000 Subject: [PATCH] Find customers by user id as well as email Also fixing up a spec which became brittle due to too much mocking. --- app/models/spree/order.rb | 3 ++- spec/models/spree/order/callbacks_spec.rb | 4 ++-- spec/models/spree/order_spec.rb | 2 -- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index d6c8c1d3b8..cd8a57d959 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -718,7 +718,8 @@ module Spree end def find_customer - Customer.of(distributor).find_by(email: email_for_customer) + user&.customers&.of(distributor)&.first || + Customer.of(distributor).find_by(email: email_for_customer) end def create_customer diff --git a/spec/models/spree/order/callbacks_spec.rb b/spec/models/spree/order/callbacks_spec.rb index a3cb0744ec..ed5b4c2c35 100644 --- a/spec/models/spree/order/callbacks_spec.rb +++ b/spec/models/spree/order/callbacks_spec.rb @@ -21,10 +21,10 @@ describe Spree::Order do context "#save" do context "when associated with a registered user" do - let(:user) { double(:user, email: "test@example.com") } + let(:user) { Spree::User.new(email: "test@example.com") } before do - allow(order).to receive_messages user: user + order.user = user end it "should assign the email address of the user" do diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index 113f7fc8bb..85430bfc0a 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -975,8 +975,6 @@ describe Spree::Order do end it "recognises users with changed email address" do - pending "#9002" - order.update!(state: "complete") # Change email instantly without confirmation via Devise: