comments now go go go and are tested RS MS
This commit is contained in:
parent
aa083735fa
commit
e696ef7023
5 changed files with 57 additions and 36 deletions
|
|
@ -3,6 +3,7 @@ class Comment
|
||||||
include ROXML
|
include ROXML
|
||||||
include Diaspora::Webhooks
|
include Diaspora::Webhooks
|
||||||
|
|
||||||
|
|
||||||
xml_accessor :text
|
xml_accessor :text
|
||||||
xml_accessor :person, :as => Person
|
xml_accessor :person, :as => Person
|
||||||
xml_accessor :post_id
|
xml_accessor :post_id
|
||||||
|
|
@ -17,11 +18,18 @@ class Comment
|
||||||
key :person_id, ObjectId
|
key :person_id, ObjectId
|
||||||
belongs_to :person, :class_name => "Person"
|
belongs_to :person, :class_name => "Person"
|
||||||
|
|
||||||
|
after_save :send_friends_comments_on_my_posts
|
||||||
|
|
||||||
def ==(other)
|
def ==(other)
|
||||||
(self.message == other.message) && (self.person.email == other.person.email)
|
(self.message == other.message) && (self.person.email == other.person.email)
|
||||||
end
|
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
|
||||||
|
|
@ -69,11 +69,13 @@ module Diaspora
|
||||||
|
|
||||||
|
|
||||||
def push_to(recipients)
|
def push_to(recipients)
|
||||||
|
unless recipients.empty?
|
||||||
recipients.map!{|x| x = x.url + "receive/"}
|
recipients.map!{|x| x = x.url + "receive/"}
|
||||||
xml = self.class.build_xml_for([self])
|
xml = self.class.build_xml_for([self])
|
||||||
@@queue.add_post_request( recipients, xml )
|
@@queue.add_post_request( recipients, xml )
|
||||||
@@queue.process
|
@@queue.process
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def prep_webhook
|
def prep_webhook
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ describe Diaspora do
|
||||||
describe Webhooks do
|
describe Webhooks do
|
||||||
before do
|
before do
|
||||||
@user = Factory.create(:user, :email => "bob@aol.com")
|
@user = Factory.create(:user, :email => "bob@aol.com")
|
||||||
|
@friend = Factory.create(:friend)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "header" do
|
describe "header" do
|
||||||
|
|
@ -53,9 +54,7 @@ describe Diaspora do
|
||||||
Factory.create(:friend, :url => "http://www.alice.com/")
|
Factory.create(:friend, :url => "http://www.alice.com/")
|
||||||
Factory.create(:friend, :url => "http://www.jane.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 == Friend.all
|
||||||
@post.friends_with_permissions.should include("http://www.alice.com/receive/")
|
|
||||||
@post.friends_with_permissions.should include("http://www.jane.com/receive/")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should send an owners post to their friends" do
|
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
|
it "should ensure one url is created for every friend" do
|
||||||
5.times {Factory.create(:friend)}
|
5.times {Factory.create(:friend)}
|
||||||
@post.friends_with_permissions.size.should == 5
|
@post.friends_with_permissions.size.should == 6
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should build an xml object containing multiple Post types" do
|
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
|
comment.post.should == post
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -15,21 +15,47 @@ describe Comment do
|
||||||
|
|
||||||
it "should be able to comment on a friend's status" do
|
it "should be able to comment on a friend's status" do
|
||||||
friend = Factory.create :friend
|
friend = Factory.create :friend
|
||||||
status = Factory.create(:status_message, :person => @friend)
|
status = Factory.create(:status_message, :person => friend)
|
||||||
@user.comment "sup dog", :on => status
|
@user.comment "sup dog", :on => status
|
||||||
|
|
||||||
StatusMessage.first.comments.first.text.should == "sup dog"
|
StatusMessage.first.comments.first.text.should == "sup dog"
|
||||||
StatusMessage.first.comments.first.person.should == @user
|
StatusMessage.first.comments.first.person.should == @user
|
||||||
end
|
end
|
||||||
|
it 'should not send out comments when we have no friends' do
|
||||||
|
status = Factory.create(:status_message, :person => @user)
|
||||||
it 'should be able to send a post owner any new comments a user adds' do
|
Comment.send(:class_variable_get, :@@queue).should_not_receive(:add_post_request)
|
||||||
friend = Factory.create(:friend)
|
@user.comment "sup dog", :on => status
|
||||||
status = Factory.create(:status_message, :person => friend)
|
end
|
||||||
|
describe 'comment propagation' do
|
||||||
Comment.send(:class_variable_get, :@@queue).should_receive(:add_post_request)
|
before do
|
||||||
@user.comment "yo", :on => status
|
@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
|
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
|
end
|
||||||
Loading…
Reference in a new issue