diff --git a/app/models/invitation.rb b/app/models/invitation.rb index 97cbc6c..dc3b2af 100644 --- a/app/models/invitation.rb +++ b/app/models/invitation.rb @@ -65,18 +65,16 @@ class Invitation < Task task_args = if user.nil? {:person => person, :friend_name => friend_name, :friend_email => friend_email, :message => message} - elsif !user.person.is_a_friend?(person) + else {:person => person, :target => user.person} end - if !task_args.nil? - if profile.person? - InviteFriend.create(task_args) - elsif profile.community? - InviteMember.create(task_args.merge(:community_id => profile.id)) - else - raise NotImplementedError, 'Don\'t know how to invite people to a %s' % profile.class.to_s - end + if profile.person? + InviteFriend.create(task_args) if user.nil? || !user.person.is_a_friend?(person) + elsif profile.community? + InviteMember.create(task_args.merge(:community_id => profile.id)) if user.nil? || !user.person.is_member_of?(profile) + else + raise NotImplementedError, 'Don\'t know how to invite people to a %s' % profile.class.to_s end end end diff --git a/test/unit/invitation_test.rb b/test/unit/invitation_test.rb index 9728c50..054fc2d 100644 --- a/test/unit/invitation_test.rb +++ b/test/unit/invitation_test.rb @@ -60,6 +60,19 @@ class InvitationTest < ActiveSupport::TestCase end end + should 'not create task if the invited member is already a member of the community' do + person = fast_create(Person) + person.user = User.new(:email => 'current_user@email.invalid') + community = fast_create(Community) + user_to_invite = fast_create(User, :email => 'person_to_invite@email.invalid') + person_to_invite = fast_create(Person, :user_id => user_to_invite.id) + community.add_member(person_to_invite) + + assert_no_difference 'InviteMember.count' do + Invitation.invite(person, ['person_to_invite@email.invalid'], 'hello friend ', community) + end + end + should 'not crash if the invited friend is already your friend in the environment' do person = create_user('person').person invited_friend = create_user('invited_friend').person -- libgit2 0.21.2