Commit 737f856ef88a810583886ab402e1267e098c54d8
1 parent
a19e1c86
Exists in
master
and in
27 other branches
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)
Showing
2 changed files
with
15 additions
and
1 deletions
Show diff stats
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? | ... | ... |