Merge branch 'master' of github.com:diaspora/diaspora_rails
This commit is contained in:
commit
877f321d51
9 changed files with 201 additions and 69 deletions
|
|
@ -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
|
||||
64
db/seeds.rb
64
db/seeds.rb
|
|
@ -9,35 +9,43 @@
|
|||
require 'config/environment'
|
||||
|
||||
# Create seed user
|
||||
User.create( :email => "a@a.com", :password => "aaaaaa", :profile => Profile.create( :first_name => "Robert", :last_name => "Grimm" ))
|
||||
user = User.create( :email => "tom@joindiaspora.com", :password => "aaaaaa", :profile => Profile.create( :first_name => "Diaspora", :last_name => "Tom" ))
|
||||
|
||||
names = [ ["George", "Washington"],
|
||||
["John", "Adams"],
|
||||
["Thomas", "Jefferson"],
|
||||
["James", "Madison"],
|
||||
["James", "Monroe"],
|
||||
["John Quincy", "Adams"],
|
||||
["Andrew", "Jackson"],
|
||||
["Martin Van", "Buren"],
|
||||
["William Henry","Harrison"],
|
||||
["John", "Tyler"],
|
||||
["James K." , "Polk"],
|
||||
["Zachary", "Taylor"],
|
||||
["Millard", "Fillmore"],
|
||||
["Franklin", "Pierce"],
|
||||
["James", "Buchanan"],
|
||||
["Abraham", "Lincoln"]
|
||||
]
|
||||
|
||||
# Make friends
|
||||
friend_one = Friend.create( :email => "babycakes@a.com", :url => "http://babycakes.joindiaspora.com/", :profile =>Profile.create( :first_name => "Baby", :last_name => "Cakes") )
|
||||
friend_two = Friend.create( :email => "mario@a.com", :url => "http://mario.joindiaspora.com/", :profile => Profile.create( :first_name => "Mario", :last_name => "Cakes") )
|
||||
friend_three = Friend.create( :email => "stuff@a.com", :url => "http://stuff.joindiaspora.com/", :profile => Profile.create( :first_name => "Stuff", :last_name => "Cakes") )
|
||||
(1..10).each { |n|
|
||||
Friend.create( :email => "b#{n}@joindiaspora.com", :url => "http://b#{n}.joindiaspora.com/", :profile => Profile.create(:first_name => names[n-1][0], :last_name => names[n-1][1]))
|
||||
}
|
||||
|
||||
# Populate feed
|
||||
StatusMessage.create(:message => "There's a bomb in the lasagna!?", :person => friend_one )
|
||||
|
||||
Bookmark.create(:title => "xkcd", :link => "http://xkcd.com/743/", :person => friend_two )
|
||||
|
||||
StatusMessage.create(:message => "I switched to Motoroi today, a Motorola Android-based phone, in Korea. Now, I am using Android phones in both the U.S. and Korea", :person => friend_two )
|
||||
|
||||
StatusMessage.create(:message => "I had 5 hours to study for it :-( GREs on Thursday. Wunderbar.", :person => friend_two )
|
||||
|
||||
StatusMessage.create(:message => "Spotted in toy story 3: google maps, OSX, and windows XP. Two out of three isn't bad.", :person => friend_three )
|
||||
|
||||
Bookmark.create( :title => "Reddit", :link => "http://reddit.com", :person => friend_one )
|
||||
Blog.create(:title => "I Love Rock'N'Roll - Joan Jett & The Blackhearts", :body => "<p>The loudspeakers played this song as we walked into the city pool for the first time this summer. Those loudspeakers make every song sound fresh even if I have heard it a thousand times and their effect on this song was no different. Joan sounded young and strong and ready, and for a moment I forgot where or when I was.</p> <p>also i can tell it won’t be long and also happy summer imaginary constructs -mumblelard</p>", :person => friend_one )
|
||||
|
||||
|
||||
StatusMessage.create(:message => "Commercials for IE make me SO MAD and my friends just don't get why.", :person => friend_one )
|
||||
Bookmark.create(:title => "Zombo.com", :link => "http://zombo.com", :person => friend_three )
|
||||
|
||||
StatusMessage.create(:message => "Why do I have \"No More Heroes\" by Westlife on repeat all day?", :person => friend_two )
|
||||
StatusMessage.create(:message => "Mmm. Friday night. Acknowledged.", :person => friend_three )
|
||||
|
||||
StatusMessage.create(:message => "Getting a universal remote is the epitome of laziness, I do declare.", :person => friend_one )
|
||||
|
||||
StatusMessage.create(:message => "Does anyone know how to merge two Skype contact entries of the same person? (i.e. one Skype ID and one mobile number)", :person => friend_two )
|
||||
StatusMessage.create(:message => "A cool, cool morning for once.", :person => friend_one )
|
||||
StatusMessage.create(:message => "There's a bomb in the lasagna!?", :person => user)
|
||||
Bookmark.create(:title => "xkcd", :link => "http://xkcd.com/743/", :person => user )
|
||||
StatusMessage.create(:message => "I switched to Motoroi today, a Motorola Android-based phone, in Korea. Now, I am using Android phones in both the U.S. and Korea", :person => user, :created_at => Time.now-930)
|
||||
StatusMessage.create(:message => "I had 5 hours to study for it :-( GREs on Thursday. Wunderbar.", :person => user, :created_at => Time.now-43990)
|
||||
StatusMessage.create(:message => "Spotted in toy story 3: google maps, OSX, and windows XP. Two out of three isn't bad.", :person => user, :created_at => Time.now-4390)
|
||||
Bookmark.create( :title => "Reddit", :link => "http://reddit.com", :person => user, :created_at => Time.now-54390)
|
||||
Blog.create(:title => "I Love Rock'N'Roll - Joan Jett & The Blackhearts", :body => "<p>The loudspeakers played this song as we walked into the city pool for the first time this summer. Those loudspeakers make every song sound fresh even if I have heard it a thousand times and their effect on this song was no different. Joan sounded young and strong and ready, and for a moment I forgot where or when I was.</p> <p>also i can tell it won’t be long and also happy summer imaginary constructs -mumblelard</p>", :person => user, :created_at => Time.now-3090)
|
||||
StatusMessage.create(:message => "Commercials for IE make me SO MAD and my friends just don't get why.", :person => user, :created_at => Time.now-30900)
|
||||
Bookmark.create(:title => "Zombo.com", :link => "http://zombo.com", :person => user, :created_at => Time.now-9090)
|
||||
StatusMessage.create(:message => "Why do I have \"No More Heroes\" by Westlife on repeat all day?", :person => user, :created_at => Time.now-590000)
|
||||
StatusMessage.create(:message => "Mmm. Friday night. Acknowledged.", :person => user, :created_at => Time.now-503900)
|
||||
StatusMessage.create(:message => "Getting a universal remote is the epitome of laziness, I do declare.", :person => user, :created_at => Time.now-4400)
|
||||
StatusMessage.create(:message => "Does anyone know how to merge two Skype contact entries of the same person? (i.e. one Skype ID and one mobile number)", :person => user, :created_at => Time.now-400240)
|
||||
StatusMessage.create(:message => "A cool, cool morning for once.", :person => user, :created_at => Time.now-150000)
|
||||
|
|
|
|||
38
db/seeds/backer.rb
Normal file
38
db/seeds/backer.rb
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# This file should contain all the record creation needed to seed the database with its default values.
|
||||
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
|
||||
# Mayor.create(:name => 'Daley', :city => citie
|
||||
|
||||
require 'config/environment'
|
||||
|
||||
|
||||
|
||||
def create(backer_number, password)
|
||||
names = [ ["George", "Washington"],
|
||||
["John", "Adams"],
|
||||
["Thomas", "Jefferson"],
|
||||
["James", "Madison"],
|
||||
["James", "Monroe"],
|
||||
["John Quincy", "Adams"],
|
||||
["Andrew", "Jackson"],
|
||||
["Martin Van", "Buren"],
|
||||
["William Henry","Harrison"],
|
||||
["John", "Tyler"],
|
||||
["James K." , "Polk"],
|
||||
["Zachary", "Taylor"],
|
||||
["Millard", "Fillmore"],
|
||||
["Franklin", "Pierce"],
|
||||
["James", "Buchanan"],
|
||||
["Abraham", "Lincoln"]
|
||||
]
|
||||
|
||||
# Create seed user
|
||||
user = User.create( :email => "b#{backer_number}@joindiaspora.com", :password => "#{password}", :profile => Profile.create( :first_name => names[backer_number][0], :last_name => names[backer_number][1] ))
|
||||
|
||||
# Make friends with Diaspora Tom
|
||||
Friend.create( :email => "tom@joindiaspora.com", :url => "http://tom.joindiaspora.com/", :profile => Profile.create(:first_name => "Diaspora", :last_name => "Tom"))
|
||||
end
|
||||
|
||||
51
db/seeds/tom.rb
Normal file
51
db/seeds/tom.rb
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
# This file should contain all the record creation needed to seed the database with its default values.
|
||||
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
|
||||
# Mayor.create(:name => 'Daley', :city => citie
|
||||
|
||||
require 'config/environment'
|
||||
|
||||
# Create seed user
|
||||
user = User.create( :email => "tom@joindiaspora.com", :password => "aaaaaa", :profile => Profile.create( :first_name => "Diaspora", :last_name => "Tom" ))
|
||||
|
||||
names = [ ["George", "Washington"],
|
||||
["John", "Adams"],
|
||||
["Thomas", "Jefferson"],
|
||||
["James", "Madison"],
|
||||
["James", "Monroe"],
|
||||
["John Quincy", "Adams"],
|
||||
["Andrew", "Jackson"],
|
||||
["Martin Van", "Buren"],
|
||||
["William Henry","Harrison"],
|
||||
["John", "Tyler"],
|
||||
["James K." , "Polk"],
|
||||
["Zachary", "Taylor"],
|
||||
["Millard", "Fillmore"],
|
||||
["Franklin", "Pierce"],
|
||||
["James", "Buchanan"],
|
||||
["Abraham", "Lincoln"]
|
||||
]
|
||||
|
||||
# Make friends
|
||||
(1..10).each { |n|
|
||||
Friend.create( :email => "b#{n}@joindiaspora.com", :url => "http://b#{n}.joindiaspora.com/", :profile => Profile.create(:first_name => names[n-1][0], :last_name => names[n-1][1]))
|
||||
}
|
||||
|
||||
# Populate feed
|
||||
StatusMessage.create(:message => "There's a bomb in the lasagna!?", :person => user)
|
||||
Bookmark.create(:title => "xkcd", :link => "http://xkcd.com/743/", :person => user )
|
||||
StatusMessage.create(:message => "I switched to Motoroi today, a Motorola Android-based phone, in Korea. Now, I am using Android phones in both the U.S. and Korea", :person => user, :created_at => Time.now-930)
|
||||
StatusMessage.create(:message => "I had 5 hours to study for it :-( GREs on Thursday. Wunderbar.", :person => user, :created_at => Time.now-43990)
|
||||
StatusMessage.create(:message => "Spotted in toy story 3: google maps, OSX, and windows XP. Two out of three isn't bad.", :person => user, :created_at => Time.now-4390)
|
||||
Bookmark.create( :title => "Reddit", :link => "http://reddit.com", :person => user, :created_at => Time.now-54390)
|
||||
Blog.create(:title => "I Love Rock'N'Roll - Joan Jett & The Blackhearts", :body => "<p>The loudspeakers played this song as we walked into the city pool for the first time this summer. Those loudspeakers make every song sound fresh even if I have heard it a thousand times and their effect on this song was no different. Joan sounded young and strong and ready, and for a moment I forgot where or when I was.</p> <p>also i can tell it won’t be long and also happy summer imaginary constructs -mumblelard</p>", :person => user, :created_at => Time.now-3090)
|
||||
StatusMessage.create(:message => "Commercials for IE make me SO MAD and my friends just don't get why.", :person => user, :created_at => Time.now-30900)
|
||||
Bookmark.create(:title => "Zombo.com", :link => "http://zombo.com", :person => user, :created_at => Time.now-9090)
|
||||
StatusMessage.create(:message => "Why do I have \"No More Heroes\" by Westlife on repeat all day?", :person => user, :created_at => Time.now-590000)
|
||||
StatusMessage.create(:message => "Mmm. Friday night. Acknowledged.", :person => user, :created_at => Time.now-503900)
|
||||
StatusMessage.create(:message => "Getting a universal remote is the epitome of laziness, I do declare.", :person => user, :created_at => Time.now-4400)
|
||||
StatusMessage.create(:message => "Does anyone know how to merge two Skype contact entries of the same person? (i.e. one Skype ID and one mobile number)", :person => user, :created_at => Time.now-400240)
|
||||
StatusMessage.create(:message => "A cool, cool morning for once.", :person => user, :created_at => Time.now-150000)
|
||||
|
|
@ -64,10 +64,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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,23 @@
|
|||
namespace :db do
|
||||
desc 'Seed the current RAILS_ENV database from db/seeds.rb'
|
||||
task :seed do
|
||||
require 'db/seeds'
|
||||
namespace :seed do
|
||||
task :tom do
|
||||
puts "Seeding the database for #{Rails.env}..."
|
||||
require 'db/seeds/tom'
|
||||
end
|
||||
task :backer, :num, :password do |t, args|
|
||||
puts "Seeding the database for #{Rails.env}..."
|
||||
require 'db/seeds/backer'
|
||||
create( Integer(args.num), args.password )
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Delete the collections in the current RAILS_ENV database'
|
||||
task :delete do
|
||||
task :purge do
|
||||
require 'config/environment'
|
||||
|
||||
puts "Purging the database for #{Rails.env}..."
|
||||
|
||||
# Specifiy what models to remove
|
||||
Post.delete_all
|
||||
Person.delete_all
|
||||
|
|
@ -15,7 +26,10 @@ namespace :db do
|
|||
|
||||
desc 'Purge and seed the current RAILS_ENV database using information from db/seeds.rb'
|
||||
task :reset do
|
||||
Rake::Task['db:delete'].invoke
|
||||
Rake::Task['db:seed'].invoke
|
||||
|
||||
puts "Resetting the database for #{Rails.env}".upcase
|
||||
Rake::Task['db:purge'].invoke
|
||||
Rake::Task['db:seed:tom'].invoke
|
||||
puts "Success!"
|
||||
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
|
||||
Loading…
Reference in a new issue