From f7523ad88c678dcad3b15e8ea98571a828a84d88 Mon Sep 17 00:00:00 2001 From: Bing Xie Date: Wed, 24 Aug 2016 15:10:40 +1000 Subject: [PATCH] Create customer with default name and addresses --- app/models/spree/order_decorator.rb | 3 ++- spec/models/spree/order_spec.rb | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/models/spree/order_decorator.rb b/app/models/spree/order_decorator.rb index fccbc639b2..f6128a736d 100644 --- a/app/models/spree/order_decorator.rb +++ b/app/models/spree/order_decorator.rb @@ -289,7 +289,8 @@ Spree::Order.class_eval do def ensure_customer unless associate_customer - self.customer = Customer.create(enterprise: distributor, email: email_for_customer, user: user) + customer_name = bill_address.andand.full_name + self.customer = Customer.create(enterprise: distributor, email: email_for_customer, user: user, name: customer_name, bill_address: bill_address.andand.clone, ship_address: ship_address.andand.clone) end end end diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index 2140163f98..b8ea3ae0ee 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -590,10 +590,18 @@ describe Spree::Order do end context "and order#email_for_customer does not match any existing customers" do - it "creates a new customer" do + before { + order.bill_address = create(:address) + order.ship_address = create(:address) + } + it "creates a new customer with defaut name and addresses" do expect(order.customer).to be_nil expect{order.send(:ensure_customer)}.to change{Customer.count}.by 1 expect(order.customer).to be_a Customer + + expect(order.customer.name).to eq order.bill_address.full_name + expect(order.customer.bill_address.same_as?(order.bill_address)).to be true + expect(order.customer.ship_address.same_as?(order.ship_address)).to be true end end end