Skip to content
Extraits de code Groupes Projets
Valider e696ef70 rédigé par maxwell's avatar maxwell
Parcourir les fichiers

comments now go go go and are tested RS MS

parent aa083735
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -3,6 +3,7 @@ class Comment
include ROXML
include Diaspora::Webhooks
xml_accessor :text
xml_accessor :person, :as => Person
xml_accessor :post_id
......@@ -17,11 +18,18 @@ class Comment
key :person_id, ObjectId
belongs_to :person, :class_name => "Person"
after_save :send_friends_comments_on_my_posts
def ==(other)
(self.message == other.message) && (self.person.email == other.person.email)
end
end
protected
def send_friends_comments_on_my_posts
if (User.first.mine?(self.post) && self.person.is_a?(Friend))
self.push_to(self.post.friends_with_permissions)
end
end
end
\ No newline at end of file
......@@ -69,10 +69,12 @@ module Diaspora
def push_to(recipients)
recipients.map!{|x| x = x.url + "receive/"}
xml = self.class.build_xml_for([self])
@@queue.add_post_request( recipients, xml )
@@queue.process
unless recipients.empty?
recipients.map!{|x| x = x.url + "receive/"}
xml = self.class.build_xml_for([self])
@@queue.add_post_request( recipients, xml )
@@queue.process
end
end
......
......@@ -8,6 +8,7 @@ describe Diaspora do
describe Webhooks do
before do
@user = Factory.create(:user, :email => "bob@aol.com")
@friend = Factory.create(:friend)
end
describe "header" do
......@@ -53,9 +54,7 @@ describe Diaspora do
Factory.create(:friend, :url => "http://www.alice.com/")
Factory.create(:friend, :url => "http://www.jane.com/")
@post.friends_with_permissions.should include("http://www.bob.com/receive/")
@post.friends_with_permissions.should include("http://www.alice.com/receive/")
@post.friends_with_permissions.should include("http://www.jane.com/receive/")
@post.friends_with_permissions.should == Friend.all
end
it "should send an owners post to their friends" do
......@@ -73,7 +72,7 @@ describe Diaspora do
it "should ensure one url is created for every friend" do
5.times {Factory.create(:friend)}
@post.friends_with_permissions.size.should == 5
@post.friends_with_permissions.size.should == 6
end
it "should build an xml object containing multiple Post types" do
......
......@@ -103,20 +103,6 @@ describe "parser in application helper" do
comment.post.should == post
end
it 'should parse a person out of a post' do
@user.comment "foo", :on => @status_messages.first
xml = Comment.build_xml_for([Comment.first])
puts xml
objs = parse_objects_from_xml(xml)
puts objs.inspect
end
end
end
......@@ -15,21 +15,47 @@ describe Comment do
it "should be able to comment on a friend's status" do
friend = Factory.create :friend
status = Factory.create(:status_message, :person => @friend)
status = Factory.create(:status_message, :person => friend)
@user.comment "sup dog", :on => status
StatusMessage.first.comments.first.text.should == "sup dog"
StatusMessage.first.comments.first.person.should == @user
end
it 'should be able to send a post owner any new comments a user adds' do
friend = Factory.create(:friend)
status = Factory.create(:status_message, :person => friend)
Comment.send(:class_variable_get, :@@queue).should_receive(:add_post_request)
@user.comment "yo", :on => status
it 'should not send out comments when we have no friends' do
status = Factory.create(:status_message, :person => @user)
Comment.send(:class_variable_get, :@@queue).should_not_receive(:add_post_request)
@user.comment "sup dog", :on => status
end
describe 'comment propagation' do
before do
@friend = Factory.create(:friend)
@friend_two = Factory.create(:friend)
@friend_status = Factory.create(:status_message, :person => @friend)
@user_status = Factory.create(:status_message, :person => @user)
end
it "should send a user's comment on a friend's post to that friend" do
Comment.send(:class_variable_get, :@@queue).should_receive(:add_post_request)
@user.comment "yo", :on => @friend_status
end
it 'should send a user comment on his own post to lots of friends' do
allowed_urls = @user_status.friends_with_permissions.map!{|x| x = x.url + "receive/"}
Comment.send(:class_variable_get, :@@queue).should_receive(:add_post_request).with(allowed_urls, anything )
@user.comment "yo", :on => @user_status
end
it 'should send a comment a friend made on your post to all friends' do
Comment.send(:class_variable_get, :@@queue).should_receive(:add_post_request)
com = Comment.create(:person => @friend, :text => "balls", :post => @user_status)
end
it 'should not send a comment a friend made on a friend post to anyone' do
Comment.send(:class_variable_get, :@@queue).should_not_receive(:add_post_request)
com = Comment.create(:person => @friend, :text => "balls", :post => @friend_status)
end
end
end
end
end
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter