From 08739ad23d71dcb92f740f15ee43bdf72f370cd3 Mon Sep 17 00:00:00 2001 From: ilya <ilya@laptop.(none)> Date: Wed, 18 Aug 2010 15:23:46 -0700 Subject: [PATCH] DG IZ; retractions remove post references in group objects --- app/models/user.rb | 4 ++++ spec/models/group_spec.rb | 29 ++++++++++++++++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 012e6c9233..1f82115ae6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -243,6 +243,10 @@ class User else object.perform self.id + groups = self.groups_with_person(object.person) + groups.each{ |group| group.post_ids.delete(ensure_bson(object.post_id)) + group.save + } end elsif object.is_a? Request person = Diaspora::Parser.get_or_create_person_object_from_xml( xml ) diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index 26f3397d45..15de4bdbe4 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -55,16 +55,16 @@ describe Group do describe 'posting' do it 'should add post to group via post method' do - @group = @user.group(:name => 'losers', :people => [@friend]) + group = @user.group(:name => 'losers', :people => [@friend]) - status_message = @user.post( :status_message, :message => "hey", :group_id => @group.id ) + status_message = @user.post( :status_message, :message => "hey", :group_id => group.id ) - @group.reload - @group.posts.include?(status_message).should be true + group.reload + group.posts.include?(status_message).should be true end it 'should add post to group via receive method' do - group = @user.group(:name => 'losers') + group = @user.group(:name => 'losers') group2 = @user2.group(:name => 'winners') friend_users(@user, group, @user2, group2) @@ -77,5 +77,24 @@ describe Group do @user.visible_posts(:by_members_of => group).include?(message).should be true end + it 'should retract the post from the groups as well' do + group = @user.group(:name => 'losers') + group2 = @user2.group(:name => 'winners') + friend_users(@user, group, @user2, group2) + + message = @user2.post(:status_message, :message => "Hey Dude") + + @user.receive message.to_diaspora_xml + group.reload + + group.post_ids.include?(message.id).should be true + + retraction = @user2.retract(message) + @user.receive retraction.to_diaspora_xml + + group.reload + group.post_ids.include?(message.id).should be false + end end + end -- GitLab