don't dispatch locally on comments if you're the post owner

This commit is contained in:
zhitomirskiyi 2011-01-24 19:13:23 -08:00
parent d040de541a
commit 716899f919
3 changed files with 21 additions and 14 deletions

View file

@ -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])

View file

@ -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

View file

@ -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