diff --git a/lib/postzord/dispatch.rb b/lib/postzord/dispatch.rb index 4f6aab8e5..e6ec93fd0 100644 --- a/lib/postzord/dispatch.rb +++ b/lib/postzord/dispatch.rb @@ -28,7 +28,10 @@ class Postzord::Dispatch self.socket_and_notify_users(local_users) end - self.deliver_to_local(local_people) + unless @object.is_a?(Comment) && @sender.owns?(@object.post) + self.deliver_to_local(local_people) + end + self.deliver_to_remote(remote_people) end self.deliver_to_services(opts[:url]) diff --git a/spec/intergration/receiving_spec.rb b/spec/intergration/receiving_spec.rb index 0a90a766c..ef00d2422 100644 --- a/spec/intergration/receiving_spec.rb +++ b/spec/intergration/receiving_spec.rb @@ -216,7 +216,6 @@ describe 'a user receives a post' do receive_with_zord(@user2, @user1.person, xml) receive_with_zord(@user3, @user1.person, xml) - end it 'does not raise a `Mysql2::Error: Duplicate entry...` exception on save' do @@ -227,14 +226,6 @@ describe 'a user receives a post' do receive_with_zord(@user1, @user2.person, @xml) }.should_not raise_exception end - - it 'should dispatch to the remote user' do - pending - Postzord::Receiver.should_receive(:new).exactly(3).times - - @comment = @user2.comment('tada',:on => @post) - @user2.dispatch_comment(@comment) - end end end diff --git a/spec/lib/postzord/dispatch_spec.rb b/spec/lib/postzord/dispatch_spec.rb index 46606e559..db4d0c6fe 100644 --- a/spec/lib/postzord/dispatch_spec.rb +++ b/spec/lib/postzord/dispatch_spec.rb @@ -85,10 +85,23 @@ describe Postzord::Dispatch do @mailman.post end - it 'calls deliver_to_local' do - @mailman.stub!(:socket_and_notify_users) - @mailman.should_receive(:deliver_to_local) - @mailman.post + context 'local recipients' do + it 'gets called if not the post owner' do + @mailman.stub!(:socket_and_notify_users) + @mailman.should_receive(:deliver_to_local) + @mailman.post + end + + it 'does not get called if not the post owner' do + status = @user.build_post(:status_message, :message => 'hey', :to => @user.aspects.first) + + comment = @user.comment "yo", :on => status + comment.should_receive(:subscribers).and_return([@local_user.person]) + mailman2 = Postzord::Dispatch.new(@user, comment) + mailman2.stub!(:socket_and_notify_users) + mailman2.should_not_receive(:deliver_to_local) + mailman2.post + end end end end