Broke up user spec, put user update back in routes

This commit is contained in:
Raphael 2010-08-17 22:03:45 -07:00
parent 82f53663ab
commit 55d84b3288
9 changed files with 408 additions and 495 deletions

View file

@ -6,13 +6,13 @@ class User
key :friend_ids, Array key :friend_ids, Array
key :pending_request_ids, Array key :pending_request_ids, Array
key :post_ids, Array key :visible_post_ids, Array
one :person, :class_name => 'Person', :foreign_key => :owner_id one :person, :class_name => 'Person', :foreign_key => :owner_id
many :friends, :in => :friend_ids, :class_name => 'Person' many :friends, :in => :friend_ids, :class_name => 'Person'
many :pending_requests, :in => :pending_request_ids, :class_name => 'Request' many :pending_requests, :in => :pending_request_ids, :class_name => 'Request'
many :posts, :in => :post_ids, :class_name => 'Post' many :raw_visible_posts, :in => :visible_post_ids, :class_name => 'Post'
many :groups, :class_name => 'Group' many :groups, :class_name => 'Group'
@ -49,16 +49,16 @@ class User
post.socket_to_uid(id) if post.respond_to?(:socket_to_uid) post.socket_to_uid(id) if post.respond_to?(:socket_to_uid)
self.posts << post self.raw_visible_posts << post
self.save self.save
post post
end end
def posts_for( opts = {} ) def visible_posts( opts = {} )
if opts[:group] if opts[:by_members_of]
group = self.groups.find_by_id( opts[:group].id ) group = self.groups.find_by_id( opts[:by_members_of].id )
self.posts.find_all_by_person_id( (group.person_ids + [self.person.id] ), :order => "created_at desc") self.raw_visible_posts.find_all_by_person_id( (group.person_ids + [self.person.id] ), :order => "created_at desc")
end end
end end
@ -182,8 +182,8 @@ class User
groups.each{|g| g.person_ids.delete( bad_friend.id )} groups.each{|g| g.person_ids.delete( bad_friend.id )}
self.save self.save
self.posts.find_all_by_person_id( bad_friend.id ).each{|post| self.raw_visible_posts.find_all_by_person_id( bad_friend.id ).each{|post|
self.post_ids.delete( post.id ) self.visible_post_ids.delete( post.id )
post.user_refs -= 1 post.user_refs -= 1
(post.user_refs > 0 || post.person.owner.nil? == false) ? post.save : post.destroy (post.user_refs > 0 || post.person.owner.nil? == false) ? post.save : post.destroy
} }
@ -252,7 +252,7 @@ class User
object.user_refs += 1 object.user_refs += 1
object.save object.save
self.posts << object self.raw_visible_posts << object
self.save self.save

View file

@ -1,6 +1,6 @@
Diaspora::Application.routes.draw do |map| Diaspora::Application.routes.draw do |map|
resources :people resources :people
resources :users, :only => [:edit, :show] resources :users, :only => [:edit, :show, :update]
resources :status_messages resources :status_messages
resources :comments resources :comments
resources :requests resources :requests

View file

@ -1,32 +0,0 @@
require File.dirname(__FILE__) + '/../spec_helper'
describe Blog do
before do
@user = Factory.create(:user, :email => "bob@aol.com")
end
it "should have a title and body" do
n = Blog.new
n.valid?.should be false
n.title = "jimmy"
n.valid?.should be false
n.body = "wales"
n.valid?.should be true
end
describe "XML" do
it 'should serialize to XML' do
body = Factory.create(:blog, :title => "yessir", :body => "penguins", :person => @user.person)
body.to_xml.to_s.should include "<title>yessir</title>"
body.to_xml.to_s.should include "<body>penguins</body>"
end
it 'should marshal serialized XML to object' do
xml = "<blog>\n <title>yessir</title>\n <body>I hate WALRUSES!</body>\n</blog>"
parsed = Blog.from_xml(xml)
parsed.body.should == "I hate WALRUSES!"
end
end
end

View file

@ -1,80 +0,0 @@
require File.dirname(__FILE__) + '/../spec_helper'
describe Bookmark do
it "should have a link" do
bookmark = Factory.build(:bookmark, :link => nil)
bookmark.valid?.should be false
bookmark.link = "http://angjoo.com/"
bookmark.valid?.should be true
end
it 'should validate its link' do
bookmark = Factory.build(:bookmark)
#invalid links
bookmark.link = "zsdvzxdg"
bookmark.valid?.should == false
bookmark.link = "sdfasfa.c"
bookmark.valid?.should == false
bookmark.link = "http://.com/"
bookmark.valid?.should == false
bookmark.link = "http://www..com/"
bookmark.valid?.should == false
bookmark.link = "http:/www.asodij.com/"
bookmark.valid?.should == false
bookmark.link = "https:/www.asodij.com/"
bookmark.valid?.should == false
bookmark.link = "http:///www.asodij.com/"
bookmark.valid?.should == false
end
it 'should clean links' do
bad_links = [
"google.com",
"www.google.com",
"google.com/",
"www.google.com/",
"http://google.com",
"http://www.google.com"
]
bad_links.each{ |link|
Bookmark.clean_link(link).should satisfy{ |link|
/^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix.match(link)
}
}
end
describe "XML" do
it 'should serialize to XML' do
u = Factory.create(:user)
message = Factory.create(:bookmark, :title => "Reddit", :link => "http://reddit.com/", :person => u.person)
message.to_xml.to_s.should include "<title>Reddit</title>"
message.to_xml.to_s.should include "<link>http://reddit.com/</link>"
end
it 'should marshal serialized XML to object' do
xml = "<bookmark><title>Reddit</message><link>http://reddit.com/</link></bookmark>"
parsed = Bookmark.from_xml(xml)
parsed.title.should == "Reddit"
parsed.link.should == "http://reddit.com/"
parsed.valid?.should be_true
end
end
describe 'with encryption' do
before do
unstub_mocha_stubs
@user = Factory.create(:user)
end
after do
stub_signature_verification
end
it 'should save a signed bookmark' do
bookmark = @user.post(:bookmark, :title => "I love cryptography", :link => "http://pgp.mit.edu/")
bookmark.created_at.should_not be nil
end
end
end

View file

@ -0,0 +1,125 @@
require File.dirname(__FILE__) + '/../../spec_helper'
describe User do
before do
@user = Factory.create :user
@group = @user.group(:name => 'heroes')
@user2 = Factory.create(:user)
@group2 = @user2.group(:name => 'losers')
#Factory.create :friend, @user
friend_users(@user, @group, @user2, @group2)
end
it 'should be able to parse and store a status message from xml' do
status_message = @user2.post :status_message, :message => 'store this!'
person = @user2.person
xml = status_message.to_diaspora_xml
@user2.destroy
status_message.destroy
StatusMessage.all.size.should == 0
@user.receive( xml )
person.posts.first.message.should == 'store this!'
StatusMessage.all.size.should == 1
end
describe 'post refs' do
before do
@user2 = Factory.create(:user)
@user.activate_friend( @user2.person, @group)
@user3 = Factory.create(:user)
@group3 = @user3.group(:name => 'heroes')
end
it "should add the post to that user's posts when a user posts it" do
status_message = @user.post :status_message, :message => "hi"
@user.reload
@user.raw_visible_posts.include?(status_message).should be true
end
it 'should be removed on unfriending' do
status_message = @user2.post :status_message, :message => "hi"
@user.receive status_message.to_diaspora_xml
@user.reload
@user.raw_visible_posts.count.should == 1
@user.unfriend(@user2.person)
@user.reload
@user.raw_visible_posts.count.should == 0
Post.count.should be 1
end
it 'should be remove a post if the noone links to it' do
status_message = @user2.post :status_message, :message => "hi"
@user.receive status_message.to_diaspora_xml
@user.reload
@user.raw_visible_posts.count.should == 1
person = @user2.person
@user2.destroy
@user.unfriend(person)
@user.reload
@user.raw_visible_posts.count.should == 0
Post.count.should be 0
end
it 'should keep track of user references for one person ' do
status_message = @user2.post :status_message, :message => "hi"
@user.receive status_message.to_diaspora_xml
@user.reload
@user.raw_visible_posts.count.should == 1
status_message.reload
status_message.user_refs.should == 1
@user.unfriend(@user2.person)
status_message.reload
@user.reload
@user.raw_visible_posts.count.should == 0
status_message.reload
status_message.user_refs.should == 0
Post.count.should be 1
end
it 'should not override userrefs on receive by another person' do
@user3.activate_friend(@user2.person, @group3)
status_message = @user2.post :status_message, :message => "hi"
@user.receive status_message.to_diaspora_xml
@user3.receive status_message.to_diaspora_xml
@user.reload
@user3.reload
@user.raw_visible_posts.count.should == 1
status_message.reload
status_message.user_refs.should == 2
@user.unfriend(@user2.person)
status_message.reload
@user.reload
@user.raw_visible_posts.count.should == 0
status_message.reload
status_message.user_refs.should == 1
Post.count.should be 1
end
end
end

View file

@ -0,0 +1,223 @@
require File.dirname(__FILE__) + '/../../spec_helper'
describe User do
before do
@user = Factory.create(:user)
@group = @user.group(:name => 'heroes')
end
describe 'friend requesting' do
it "should assign a request to a group" do
friend = Factory.create(:person)
group = @user.group(:name => "Dudes")
group.requests.size.should == 0
@user.send_friend_request_to(friend.receive_url, group.id)
group.reload
group.requests.size.should == 1
end
it "should be able to accept a pending friend request" do
friend = Factory.create(:person)
r = Request.instantiate(:to => @user.receive_url, :from => friend)
r.save
Person.all.count.should == 2
Request.for_user(@user).all.count.should == 1
@user.accept_friend_request(r.id, @group.id)
Request.for_user(@user).all.count.should == 0
end
it 'should be able to ignore a pending friend request' do
friend = Factory.create(:person)
r = Request.instantiate(:to => @user.receive_url, :from => friend)
r.save
Person.count.should == 2
@user.ignore_friend_request(r.id)
Person.count.should == 1
Request.count.should == 0
end
it 'should not be able to friend request an existing friend' do friend = Factory.create(:person)
@user.friends << friend
@user.save
@user.send_friend_request_to( friend.receive_url, @group.id ).should be nil
end
describe 'multiple users accepting/rejecting the same person' do
before do
@person_one = Factory.create :person
@person_one.save
@user2 = Factory.create :user
@group2 = @user2.group(:name => "group two")
@user.pending_requests.empty?.should be true
@user.friends.empty?.should be true
@user2.pending_requests.empty?.should be true
@user2.friends.empty?.should be true
@request = Request.instantiate(:to => @user.receive_url, :from => @person_one)
@request_two = Request.instantiate(:to => @user2.receive_url, :from => @person_one)
@request_three = Request.instantiate(:to => @user2.receive_url, :from => @user.person)
@req_xml = @request.to_diaspora_xml
@req_two_xml = @request_two.to_diaspora_xml
@req_three_xml = @request_three.to_diaspora_xml
@request.destroy
@request_two.destroy
@request_three.destroy
end
it 'should befriend the user other user on the same pod' do
@user2.receive @req_three_xml
@user2.pending_requests.size.should be 1
@user2.accept_friend_request @request_three.id, @group2.id
@user2.friends.include?(@user.person).should be true
Person.all.count.should be 3
end
it 'should not delete the ignored user on the same pod' do
@user2.receive @req_three_xml
@user2.pending_requests.size.should be 1
@user2.ignore_friend_request @request_three.id
@user2.friends.include?(@user.person).should be false
Person.all.count.should be 3
end
it 'should both users should befriend the same person' do
@user.receive @req_xml
@user.pending_requests.size.should be 1
@user.accept_friend_request @request.id, @group.id
@user.friends.include?(@person_one).should be true
@user2.receive @req_two_xml
@user2.pending_requests.size.should be 1
@user2.accept_friend_request @request_two.id, @group2.id
@user2.friends.include?(@person_one).should be true
Person.all.count.should be 3
end
it 'should keep the person around if one of the users rejects him' do
@user.receive @req_xml
@user.pending_requests.size.should be 1
@user.accept_friend_request @request.id, @group.id
@user.friends.include?(@person_one).should be true
@user2.receive @req_two_xml
@user2.pending_requests.size.should be 1
@user2.ignore_friend_request @request_two.id
@user2.friends.include?(@person_one).should be false
Person.all.count.should be 3
end
it 'should not keep the person around if the users ignores them' do
@user.receive @req_xml
@user.pending_requests.size.should be 1
@user.ignore_friend_request @user.pending_requests.first.id
@user.friends.include?(@person_one).should be false
@user2.receive @req_two_xml
@user2.pending_requests.size.should be 1
@user2.ignore_friend_request @user2.pending_requests.first.id#@request_two.id
@user2.friends.include?(@person_one).should be false
Person.all.count.should be 2
end
end
describe 'a user accepting rejecting multiple people' do
before do
@person_one = Factory.create :person
@person_two = Factory.create :person
@user.pending_requests.empty?.should be true
@user.friends.empty?.should be true
@request = Request.instantiate(:to => @user.receive_url, :from => @person_one)
@request_two = Request.instantiate(:to => @user.receive_url, :from => @person_two)
end
after do
@user.receive_friend_request @request
@person_two.destroy
@user.pending_requests.size.should be 1
@user.friends.size.should be 0
@user.receive_friend_request @request_two
@user.pending_requests.size.should be 2
@user.friends.size.should be 0
@user.accept_friend_request @request.id, @group.id
@user.pending_requests.size.should be 1
@user.friends.size.should be 1
@user.friends.include?(@person_one).should be true
@user.ignore_friend_request @request_two.id
@user.pending_requests.size.should be 0
@user.friends.size.should be 1
@user.friends.include?(@person_two).should be false
end
end
describe 'unfriending' do
before do
@user2 = Factory.create :user
@group2 = @user2.group(:name => "Gross people")
request = @user.send_friend_request_to( @user2.receive_url, @group.id)
request.reverse_for @user2
@user2.activate_friend(@user.person, @group2)
@user.receive request.to_diaspora_xml
end
it 'should unfriend the other user on the same seed' do
@user.reload
@user2.reload
@user.friends.count.should == 1
@user2.friends.count.should == 1
@user.person.user_refs.should == 1
@user2.person.user_refs.should == 1
@user2.unfriend @user.person
@user2.friends.count.should be 0
@user.person.reload
@user.person.user_refs.should == 0
@user.unfriended_by @user2.person
@user2.person.reload
@user2.person.user_refs.should == 0
@group.reload
@group2.reload
@group.people.count.should == 0
@group2.people.count.should == 0
end
end
end
end

View file

@ -0,0 +1,43 @@
require File.dirname(__FILE__) + '/../../spec_helper'
describe User do
before do
@user = Factory.create(:user)
@group = @user.group(:name => 'heroes')
@group2 = @user.group(:name => 'stuff')
@user2 = Factory.create :user
@user2_group = @user2.group(:name => 'dudes')
friend_users(@user, @group, @user2, @user2_group)
@user3 = Factory.create :user
@user3_group = @user3.group(:name => 'dudes')
friend_users(@user, @group2, @user3, @user3_group)
@user4 = Factory.create :user
@user4_group = @user4.group(:name => 'dudes')
friend_users(@user, @group2, @user4, @user4_group)
end
it 'should generate a valid stream for a group of people' do
status_message1 = @user2.post :status_message, :message => "hi"
status_message2 = @user3.post :status_message, :message => "heyyyy"
status_message3 = @user4.post :status_message, :message => "yooo"
@user.receive status_message1.to_diaspora_xml
@user.receive status_message2.to_diaspora_xml
@user.receive status_message3.to_diaspora_xml
@user.reload
@user.visible_posts(:by_members_of => @group).include?(status_message1).should be true
@user.visible_posts(:by_members_of => @group).include?(status_message2).should be false
@user.visible_posts(:by_members_of => @group).include?(status_message3).should be false
@user.visible_posts(:by_members_of => @group2).include?(status_message1).should be false
@user.visible_posts(:by_members_of => @group2).include?(status_message2).should be true
@user.visible_posts(:by_members_of => @group2).include?(status_message3).should be true
end
end

View file

@ -20,179 +20,6 @@ describe User do
user.person.profile.should_not be nil user.person.profile.should_not be nil
end end
describe 'friend requesting' do
it "should assign a request to a group" do
friend = Factory.create(:person)
group = @user.group(:name => "Dudes")
group.requests.size.should == 0
@user.send_friend_request_to(friend.receive_url, group.id)
group.reload
group.requests.size.should == 1
end
it "should be able to accept a pending friend request" do
friend = Factory.create(:person)
r = Request.instantiate(:to => @user.receive_url, :from => friend)
r.save
Person.all.count.should == 2
Request.for_user(@user).all.count.should == 1
@user.accept_friend_request(r.id, @group.id)
Request.for_user(@user).all.count.should == 0
end
it 'should be able to ignore a pending friend request' do
friend = Factory.create(:person)
r = Request.instantiate(:to => @user.receive_url, :from => friend)
r.save
Person.count.should == 2
@user.ignore_friend_request(r.id)
Person.count.should == 1
Request.count.should == 0
end
it 'should not be able to friend request an existing friend' do friend = Factory.create(:person)
@user.friends << friend
@user.save
@user.send_friend_request_to( friend.receive_url, @group.id ).should be nil
end
describe 'multiple users accepting/rejecting the same person' do
before do
@person_one = Factory.create :person
@person_one.save
@user2 = Factory.create :user
@group2 = @user2.group(:name => "group two")
@user.pending_requests.empty?.should be true
@user.friends.empty?.should be true
@user2.pending_requests.empty?.should be true
@user2.friends.empty?.should be true
@request = Request.instantiate(:to => @user.receive_url, :from => @person_one)
@request_two = Request.instantiate(:to => @user2.receive_url, :from => @person_one)
@request_three = Request.instantiate(:to => @user2.receive_url, :from => @user.person)
@req_xml = @request.to_diaspora_xml
@req_two_xml = @request_two.to_diaspora_xml
@req_three_xml = @request_three.to_diaspora_xml
@request.destroy
@request_two.destroy
@request_three.destroy
end
it 'should befriend the user other user on the same pod' do
@user2.receive @req_three_xml
@user2.pending_requests.size.should be 1
@user2.accept_friend_request @request_three.id, @group2.id
@user2.friends.include?(@user.person).should be true
Person.all.count.should be 3
end
it 'should not delete the ignored user on the same pod' do
@user2.receive @req_three_xml
@user2.pending_requests.size.should be 1
@user2.ignore_friend_request @request_three.id
@user2.friends.include?(@user.person).should be false
Person.all.count.should be 3
end
it 'should both users should befriend the same person' do
@user.receive @req_xml
@user.pending_requests.size.should be 1
@user.accept_friend_request @request.id, @group.id
@user.friends.include?(@person_one).should be true
@user2.receive @req_two_xml
@user2.pending_requests.size.should be 1
@user2.accept_friend_request @request_two.id, @group2.id
@user2.friends.include?(@person_one).should be true
Person.all.count.should be 3
end
it 'should keep the person around if one of the users rejects him' do
@user.receive @req_xml
@user.pending_requests.size.should be 1
@user.accept_friend_request @request.id, @group.id
@user.friends.include?(@person_one).should be true
@user2.receive @req_two_xml
@user2.pending_requests.size.should be 1
@user2.ignore_friend_request @request_two.id
@user2.friends.include?(@person_one).should be false
Person.all.count.should be 3
end
it 'should not keep the person around if the users ignores them' do
@user.receive @req_xml
@user.pending_requests.size.should be 1
@user.ignore_friend_request @user.pending_requests.first.id
@user.friends.include?(@person_one).should be false
@user2.receive @req_two_xml
@user2.pending_requests.size.should be 1
@user2.ignore_friend_request @user2.pending_requests.first.id#@request_two.id
@user2.friends.include?(@person_one).should be false
Person.all.count.should be 2
end
end
describe 'a user accepting rejecting multiple people' do
before do
@person_one = Factory.create :person
@person_two = Factory.create :person
@user.pending_requests.empty?.should be true
@user.friends.empty?.should be true
@request = Request.instantiate(:to => @user.receive_url, :from => @person_one)
@request_two = Request.instantiate(:to => @user.receive_url, :from => @person_two)
end
after do
@user.receive_friend_request @request
@person_two.destroy
@user.pending_requests.size.should be 1
@user.friends.size.should be 0
@user.receive_friend_request @request_two
@user.pending_requests.size.should be 2
@user.friends.size.should be 0
@user.accept_friend_request @request.id, @group.id
@user.pending_requests.size.should be 1
@user.friends.size.should be 1
@user.friends.include?(@person_one).should be true
@user.ignore_friend_request @request_two.id
@user.pending_requests.size.should be 0
@user.friends.size.should be 1
@user.friends.include?(@person_two).should be false
end
end
end
describe 'profiles' do describe 'profiles' do
it 'should be able to update their profile and send it to their friends' do it 'should be able to update their profile and send it to their friends' do
Factory.create(:person) Factory.create(:person)
@ -206,204 +33,5 @@ describe User do
end end
end end
describe 'receiving' do
before do
@user2 = Factory.create(:user)
@user.friends << @user2.person
@user2.friends << @user.person
@user.person.user_refs += 1
@user2.person.user_refs += 1
@user.save
@user2.save
end
it 'should be able to parse and store a status message from xml' do
status_message = @user2.post :status_message, :message => 'store this!'
person = @user2.person
xml = status_message.to_diaspora_xml
@user2.destroy
status_message.destroy
StatusMessage.all.size.should == 0
@user.receive( xml )
person.posts.first.message.should == 'store this!'
StatusMessage.all.size.should == 1
end
end
describe 'unfriending' do
before do
@user2 = Factory.create :user
@group2 = @user2.group(:name => "Gross people")
request = @user.send_friend_request_to( @user2.receive_url, @group.id)
request.reverse_for @user2
@user2.activate_friend(@user.person, @group2)
@user.receive request.to_diaspora_xml
end
it 'should unfriend the other user on the same seed' do
@user.reload
@user2.reload
@user.friends.count.should == 1
@user2.friends.count.should == 1
@user.person.user_refs.should == 1
@user2.person.user_refs.should == 1
@user2.unfriend @user.person
@user2.friends.count.should be 0
@user.person.reload
@user.person.user_refs.should == 0
@user.unfriended_by @user2.person
@user2.person.reload
@user2.person.user_refs.should == 0
@group.reload
@group2.reload
@group.people.count.should == 0
@group2.people.count.should == 0
end
end
describe 'post refs' do
before do
@user2 = Factory.create(:user)
@user.activate_friend( @user2.person, @group)
@user3 = Factory.create(:user)
@group3 = @user3.group(:name => 'heroes')
@user.posts.count.should == 0
end
it "should add the post to that user's posts when a user posts it" do
status_message = @user.post :status_message, :message => "hi"
@user.reload
@user.posts.include?(status_message).should be true
end
it 'should be removed on unfriending' do
status_message = @user2.post :status_message, :message => "hi"
@user.receive status_message.to_diaspora_xml
@user.reload
@user.posts.count.should == 1
@user.unfriend(@user2.person)
@user.reload
@user.posts.count.should == 0
Post.count.should be 1
end
it 'should be remove a post if the noone links to it' do
status_message = @user2.post :status_message, :message => "hi"
@user.receive status_message.to_diaspora_xml
@user.reload
@user.posts.count.should == 1
person = @user2.person
@user2.destroy
@user.unfriend(person)
@user.reload
@user.posts.count.should == 0
Post.count.should be 0
end
it 'should keep track of user references for one person ' do
status_message = @user2.post :status_message, :message => "hi"
@user.receive status_message.to_diaspora_xml
@user.reload
@user.posts.count.should == 1
status_message.reload
status_message.user_refs.should == 1
@user.unfriend(@user2.person)
status_message.reload
@user.reload
@user.posts.count.should == 0
status_message.reload
status_message.user_refs.should == 0
Post.count.should be 1
end
it 'should not override userrefs on receive by another person' do
@user3 = Factory.create :user
@user3.activate_friend(@user2.person, @group3)
status_message = @user2.post :status_message, :message => "hi"
@user.receive status_message.to_diaspora_xml
@user3.receive status_message.to_diaspora_xml
@user.reload
@user3.reload
@user.posts.count.should == 1
status_message.reload
status_message.user_refs.should == 2
@user.unfriend(@user2.person)
status_message.reload
@user.reload
@user.posts.count.should == 0
status_message.reload
status_message.user_refs.should == 1
Post.count.should be 1
end
describe 'group streams' do
before do
@group = @user.group(:name => 'heroes')
@group2 = @user.group(:name => 'stuff')
@user2 = Factory.create :user
@user.activate_friend(@user2.person, @group)
@user3 = Factory.create :user
@user.activate_friend(@user3.person, @group2)
@user4 = Factory.create :user
@user.activate_friend(@user4.person, @group2)
end
it 'should generate a valid stream for a group of people' do
status_message1 = @user2.post :status_message, :message => "hi"
status_message2 = @user3.post :status_message, :message => "heyyyy"
status_message3 = @user4.post :status_message, :message => "yooo"
@user.receive status_message1.to_diaspora_xml
@user.receive status_message2.to_diaspora_xml
@user.receive status_message3.to_diaspora_xml
@user.reload
@user.posts_for(:group => @group).include?(status_message1).should be true
@user.posts_for(:group => @group).include?(status_message2).should be false
@user.posts_for(:group => @group).include?(status_message3).should be false
@user.posts_for(:group => @group2).include?(status_message1).should be false
@user.posts_for(:group => @group2).include?(status_message2).should be true
@user.posts_for(:group => @group2).include?(status_message3).should be true
end
end
end
end end

View file

@ -76,3 +76,9 @@ end
def message_queue def message_queue
Post.send(:class_variable_get, :@@queue) Post.send(:class_variable_get, :@@queue)
end end
def friend_users(user1, group1, user2, group2)
request = user1.send_friend_request_to(user2.receive_url, group1.id)
reversed_request = user2.accept_friend_request( request.id, group2.id)
user1.receive reversed_request.to_diaspora_xml
end