From a19e1c862e46b876964b134562558d3f0516f858 Mon Sep 17 00:00:00 2001 From: Larissa Reis Date: Tue, 15 Apr 2014 01:36:05 -0300 Subject: [PATCH] avoids duplicated invite pending tasks --- app/models/invitation.rb | 4 ++-- test/unit/invitation_test.rb | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/models/invitation.rb b/app/models/invitation.rb index 2c42e36..cce5965 100644 --- a/app/models/invitation.rb +++ b/app/models/invitation.rb @@ -77,9 +77,9 @@ class Invitation < Task if !task_args.nil? if profile.person? - InviteFriend.create(task_args) + InviteFriend.create(task_args) if !user || user.person.tasks.pending.of("InviteFriend").find(:all, :conditions => {:requestor_id => person.id, :target_id => user.person.id}).blank? elsif profile.community? - InviteMember.create(task_args.merge(:community_id => profile.id)) + InviteMember.create(task_args.merge(:community_id => profile.id)) if !user || user.person.tasks.pending.of("InviteMember").find(:all, :conditions => {:requestor_id => person.id}).select { |t| t.data[:community_id] == profile.id }.blank? else raise NotImplementedError, 'Don\'t know how to invite people to a %s' % profile.class.to_s end diff --git a/test/unit/invitation_test.rb b/test/unit/invitation_test.rb index 4113cb1..7909732 100644 --- a/test/unit/invitation_test.rb +++ b/test/unit/invitation_test.rb @@ -133,4 +133,24 @@ class InvitationTest < ActiveSupport::TestCase Invitation.invite(person, [friend.id.to_s], 'hello friend ', person) end end + + should 'not invite friends if there is a pending invitation' do + person = create_user('testuser1').person + friend = create_user('testuser2').person + community = fast_create(Community) + + assert_difference InviteMember, :count do + Invitation.invite(person, [friend.id.to_s], 'hello friend ', community) + end + assert_difference InviteFriend, :count do + Invitation.invite(person, [friend.id.to_s], 'hello friend ', person) + end + + assert_no_difference InviteMember, :count do + Invitation.invite(person, [friend.id.to_s], 'hello friend ', community) + end + assert_no_difference InviteFriend, :count do + Invitation.invite(person, [friend.id.to_s], 'hello friend ', person) + end + end end -- libgit2 0.21.2