diff --git a/app/services/new_supplier.rb b/app/services/new_supplier.rb index bbfc157d..dede7022 100644 --- a/app/services/new_supplier.rb +++ b/app/services/new_supplier.rb @@ -29,7 +29,7 @@ class NewSupplier def persist! @employee ||= current_employee - @employee ||= Employee.new email: email, password: password, password_confirmation: password_confirmation + @employee ||= Employee.new email: email, name: email.to_s.sub(/\@.*/, ''), password: password, password_confirmation: password_confirmation raise "Cannot create employee with #{attributes.inspect}" unless employee.save @supplier = Supplier.create name: supplier_name supplier.add_manager employee diff --git a/spec/services/new_supplier_spec.rb b/spec/services/new_supplier_spec.rb index 84617381..693de705 100644 --- a/spec/services/new_supplier_spec.rb +++ b/spec/services/new_supplier_spec.rb @@ -1,6 +1,25 @@ require 'spec_helper' describe NewSupplier do - subject { described_class.new } + let(:new_supplier_params){ {supplier_name: "New suppy", email: 'suppy@example.com', password: 'admin123', password_confirmation: 'admin123'} } + subject { described_class.new new_supplier_params } it { should_not be_persisted } + + it 'sets the name of the new employee to the email prefix' do + subject.save + subject.employee.name.should eq 'suppy' + end + + it "does not save anything when the password_confirmation is wrong" do + new_supplier_params[:password_confirmation] = "something$else" + subject.save.should be false + subject.errors[:password_confirmation].should be_present + end + + it "does not create a supplier when the name is already taken" do + create :supplier, name: 'New suppy' + expect{ subject.save }.not_to change{ Supplier.count } + subject.errors[:supplier_name].should be_present + end + end