From db3637fe84d2e4bf5743df1dfd892eff7d626cce Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 10 Jun 2016 18:14:19 +1000 Subject: [PATCH] Allow removing customer codes --- .../controllers/customers_controller.js.coffee | 12 +++++++----- app/models/customer.rb | 7 ++++++- spec/models/customer_spec.rb | 17 +++++++++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/admin/customers/controllers/customers_controller.js.coffee b/app/assets/javascripts/admin/customers/controllers/customers_controller.js.coffee index 822fbc7988..7c70a8baa5 100644 --- a/app/assets/javascripts/admin/customers/controllers/customers_controller.js.coffee +++ b/app/assets/javascripts/admin/customers/controllers/customers_controller.js.coffee @@ -14,11 +14,13 @@ angular.module("admin.customers").controller "customersCtrl", ($scope, $q, Custo $scope.customers = data $scope.checkForDuplicateCodes = -> - customers = $scope.findByCode(this.customer.code) - if (customers.length > 1) - this.duplicate = true - else - this.duplicate = false + delete this.customer.code unless this.customer.code + this.duplicate = $scope.isDuplicateCode(this.customer.code) + + $scope.isDuplicateCode = (code) -> + return false unless code + customers = $scope.findByCode(code) + customers.length > 1 $scope.findByCode = (code) -> if $scope.customers diff --git a/app/models/customer.rb b/app/models/customer.rb index 34f62a6aa6..b2141df9ec 100644 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -5,8 +5,9 @@ class Customer < ActiveRecord::Base belongs_to :user, class_name: Spree.user_class before_validation :downcase_email + before_validation :empty_code - validates :code, uniqueness: { scope: :enterprise_id, allow_blank: true, allow_nil: true } + validates :code, uniqueness: { scope: :enterprise_id, allow_nil: true } validates :email, presence: true, uniqueness: { scope: :enterprise_id, message: I18n.t('validation_msg_is_associated_with_an_exising_customer') } validates :enterprise_id, presence: true @@ -20,6 +21,10 @@ class Customer < ActiveRecord::Base email.andand.downcase! end + def empty_code + self.code = nil if code.blank? + end + def associate_user self.user = user || Spree::User.find_by_email(email) end diff --git a/spec/models/customer_spec.rb b/spec/models/customer_spec.rb index f2ac14e9b2..32e380f4d3 100644 --- a/spec/models/customer_spec.rb +++ b/spec/models/customer_spec.rb @@ -1,6 +1,23 @@ require 'spec_helper' describe Customer, type: :model do + describe 'an existing customer' do + let(:customer) { create(:customer) } + + it "saves its code" do + code = "code one" + customer.code = code + customer.save + expect(customer.code).to eq code + end + + it "can remove its code" do + customer.code = "" + customer.save + expect(customer.code).to be nil + end + end + describe 'creation callbacks' do let!(:user1) { create(:user) } let!(:user2) { create(:user) }