diff --git a/app/models/user.rb b/app/models/user.rb index 012e6c923306d502ba06b2867efcbf23ac317916..1f82115ae6ab966dd3f91125bb4977f08a743de6 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 26f3397d452215b27590923312b0752fd0cd167d..15de4bdbe40b7172464465fc7db52e4e8b28b7ef 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