Commit 737f856ef88a810583886ab402e1267e098c54d8

Authored by Larissa Reis
1 parent a19e1c86

cancel other invitations to same community when finishes task

  If a user is successfully added to a community when performing a
  community invitation task, cancel all other pending tasks the user
  might have with invitations for the same community.

(ActionItem3100)
app/models/invite_member.rb
... ... @@ -12,7 +12,7 @@ class InviteMember < Invitation
12 12 end
13 13  
14 14 def perform
15   - community.add_member(friend)
  15 + community.add_member(friend) and friend.tasks.pending.of("InviteMember").select { |t| t.data[:community_id] == community_id }.each { |invite| invite.cancel }
16 16 end
17 17  
18 18 def title
... ...
test/unit/invite_member_test.rb
... ... @@ -22,6 +22,20 @@ class InviteMemberTest < ActiveSupport::TestCase
22 22 ok('friend is member of community') { community.members.include?(friend) }
23 23 end
24 24  
  25 + should 'cancel other invitations for same community when confirmed' do
  26 + friend = create_user('friend').person
  27 + p1 = create_user('testuser1').person
  28 + p2 = create_user('testuser2').person
  29 + community = fast_create(Community)
  30 +
  31 + task = InviteMember.create!(:person => p1, :friend => friend, :community_id => community.id)
  32 + InviteMember.create!(:person => p2, :friend => friend, :community_id => community.id)
  33 +
  34 + assert_difference friend.tasks.pending, :count, -2 do
  35 + task.finish
  36 + end
  37 + end
  38 +
25 39 should 'require community (person inviting other to be a member)' do
26 40 task = InviteMember.new
27 41 task.valid?
... ...