DG IZ; posts_for :group method in User

This commit is contained in:
ilya 2010-08-17 12:12:35 -07:00
parent 4f8b8ad3c5
commit 2af41a0ea9
2 changed files with 43 additions and 1 deletions

View file

@ -51,7 +51,16 @@ class User
self.save
post
end ######### Posts and Such ###############
end
def posts_for( opts = {} )
if opts[:group]
group = self.groups.find_by_id( opts[:group].id )
self.posts.find_all_by_person_id( group.person_ids )
end
end
######### Posts and Such ###############
def retract( post )
retraction = Retraction.for(post)

View file

@ -371,6 +371,39 @@ describe User do
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