From 737f856ef88a810583886ab402e1267e098c54d8 Mon Sep 17 00:00:00 2001 From: Larissa Reis Date: Tue, 15 Apr 2014 02:00:08 -0300 Subject: [PATCH] cancel other invitations to same community when finishes task --- app/models/invite_member.rb | 2 +- test/unit/invite_member_test.rb | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/models/invite_member.rb b/app/models/invite_member.rb index 6858f79..84d37d8 100644 --- a/app/models/invite_member.rb +++ b/app/models/invite_member.rb @@ -12,7 +12,7 @@ class InviteMember < Invitation end def perform - community.add_member(friend) + community.add_member(friend) and friend.tasks.pending.of("InviteMember").select { |t| t.data[:community_id] == community_id }.each { |invite| invite.cancel } end def title diff --git a/test/unit/invite_member_test.rb b/test/unit/invite_member_test.rb index 4c51da5..3ace26b 100644 --- a/test/unit/invite_member_test.rb +++ b/test/unit/invite_member_test.rb @@ -22,6 +22,20 @@ class InviteMemberTest < ActiveSupport::TestCase ok('friend is member of community') { community.members.include?(friend) } end + should 'cancel other invitations for same community when confirmed' do + friend = create_user('friend').person + p1 = create_user('testuser1').person + p2 = create_user('testuser2').person + community = fast_create(Community) + + task = InviteMember.create!(:person => p1, :friend => friend, :community_id => community.id) + InviteMember.create!(:person => p2, :friend => friend, :community_id => community.id) + + assert_difference friend.tasks.pending, :count, -2 do + task.finish + end + end + should 'require community (person inviting other to be a member)' do task = InviteMember.new task.valid? -- libgit2 0.21.2