separating object receiving in user#receive

This commit is contained in:
danielvincent 2010-11-03 16:39:37 -07:00
parent 7e568db032
commit d5cc0ed6dc
2 changed files with 36 additions and 16 deletions

View file

@ -38,33 +38,41 @@ module Diaspora
if object.is_a?(Comment) || object.is_a?(Post)|| object.is_a?(Request) || object.is_a?(Retraction) || object.is_a?(Profile)
e = EMWebfinger.new(object.diaspora_handle)
e.on_person { |person|
e.on_person do |person|
if person.class == Person
object.person = person if object.respond_to? :person=
if object.is_a? Request
return receive_request object, person
end
raise "Not friends with that person" unless self.contact_for(salmon_author)
if object.is_a?(Comment)
receive_comment object
elsif object.is_a?(Retraction)
receive_retraction object
elsif object.is_a?(Profile)
receive_profile object, person
unless object.is_a?(Request) || self.contact_for(salmon_author)
raise "Not friends with that person"
else
receive_post object
return receive_object(object,person)
end
end
}
end
else
raise "you messed up"
end
end
def receive_object(object,person)
if object.is_a?(Request)
receive_request object, person
elsif object.is_a?(Profile)
receive_profile object, person
elsif object.is_a?(Comment)
receive_comment object
elsif object.is_a?(Retraction)
receive_retraction object
else
receive_post object
end
end
def receive_retraction retraction
if retraction.type == 'Person'
unless retraction.person.id.to_s == retraction.post_id.to_s

View file

@ -97,8 +97,9 @@ describe User do
context 'dispatching' do
let!(:user3) { make_user }
let!(:aspect3) { user3.aspects.create(:name => 'heroes') }
let!(:user4) { make_user }
let!(:aspect3) { user3.aspects.create(:name => 'heroes') }
let!(:aspect4) { user4.aspects.create(:name => 'heroes') }
let!(:post) { user.build_post :status_message, :message => "hey" }
@ -128,6 +129,17 @@ describe User do
user.should_receive(:push_to_person).twice
user.push_to_people(post, [user2.person, user3.person])
end
it 'does not use the queue for local transfer' do
User::QUEUE.should_receive(:add_post_request).twice
remote_person = user4.person
remote_person.owner_id = nil
remote_person.save
user.push_to_people(post, [user2.person, user3.person, remote_person])
end
end
end