diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index ac95b9f612..6fa9c152e5 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -733,7 +733,8 @@ module Spree end def require_customer? - return true unless new_record? || state == 'cart' + return if new_record? || state == 'cart' + true end def customer_is_valid? diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index 84153fd4d9..6cbce7875d 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -915,6 +915,48 @@ describe Spree::Order do end end + describe "#require_customer?" do + context "when the record is new" do + let(:order) { build(:order, state: state) } + + context "and the state is not cart" do + let(:state) { "complete" } + + it "returns true" do + expect(order.send(:require_customer?)).to eq(nil) + end + end + + context "and the state is cart" do + let(:state) { "cart" } + + it "returns false" do + expect(order.send(:require_customer?)).to eq(nil) + end + end + end + + context "when the record is not new" do + let(:order) { create(:order, state: state) } + + context "and the state is not cart" do + let(:state) { "complete" } + + it "returns true" do + expect(order.send(:require_customer?)).to eq(true) + end + end + + context "and the state is cart" do + let(:state) { "cart" } + + it "returns false" do + expect(order.send(:require_customer?)).to eq(nil) + end + end + end + end + describe "associating a customer" do let(:distributor) { create(:distributor_enterprise) } let!(:order) { create(:order, distributor: distributor) }