diff --git a/app/controllers/conversations_controller.rb b/app/controllers/conversations_controller.rb index 75ef768bd..9dc6ea2d1 100644 --- a/app/controllers/conversations_controller.rb +++ b/app/controllers/conversations_controller.rb @@ -29,8 +29,9 @@ class ConversationsController < ApplicationController end def create - person_ids = Contact.where(:id => params[:contact_ids].split(',')).map! do |contact| - contact.person_id + # Can't split nil + if params[:contact_ids] + person_ids = Contact.where(:id => params[:contact_ids].split(',')).map(&:person_id) end params[:conversation][:participant_ids] = person_ids | [current_user.person_id] diff --git a/spec/controllers/conversations_controller_spec.rb b/spec/controllers/conversations_controller_spec.rb index 60e3bf739..a0ee29e32 100644 --- a/spec/controllers/conversations_controller_spec.rb +++ b/spec/controllers/conversations_controller_spec.rb @@ -192,6 +192,33 @@ describe ConversationsController do }.should_not change(Message, :count).by(1) end end + + context 'with nil contact' do + before do + @hash = { + :conversation => { + :subject => 'secret stuff', + :text => 'text debug' + }, + :contact_ids => nil + } + Conversation.stub(:new).and_return(double(Conversation, + :save => false, + :id => 1)) + end + + it 'does not create a conversation' do + lambda { + post :create, @hash + }.should_not change(Conversation, :count).by(1) + end + + it 'does not create a message' do + lambda { + post :create, @hash + }.should_not change(Message, :count).by(1) + end + end end describe '#show' do