Commit 2006ce6e91b322c1cd6e12f2e86667304ecf35fc

Authored by Victor Costa
1 parent 90f4f1c1

Fix creation of tasks to invite registered users

app/models/invitation.rb
@@ -65,18 +65,16 @@ class Invitation < Task @@ -65,18 +65,16 @@ class Invitation < Task
65 65
66 task_args = if user.nil? 66 task_args = if user.nil?
67 {:person => person, :friend_name => friend_name, :friend_email => friend_email, :message => message} 67 {:person => person, :friend_name => friend_name, :friend_email => friend_email, :message => message}
68 - elsif !user.person.is_a_friend?(person) 68 + else
69 {:person => person, :target => user.person} 69 {:person => person, :target => user.person}
70 end 70 end
71 71
72 - if !task_args.nil?  
73 - if profile.person?  
74 - InviteFriend.create(task_args)  
75 - elsif profile.community?  
76 - InviteMember.create(task_args.merge(:community_id => profile.id))  
77 - else  
78 - raise NotImplementedError, 'Don\'t know how to invite people to a %s' % profile.class.to_s  
79 - end 72 + if profile.person?
  73 + InviteFriend.create(task_args) if user.nil? || !user.person.is_a_friend?(person)
  74 + elsif profile.community?
  75 + InviteMember.create(task_args.merge(:community_id => profile.id)) if user.nil? || !user.person.is_member_of?(profile)
  76 + else
  77 + raise NotImplementedError, 'Don\'t know how to invite people to a %s' % profile.class.to_s
80 end 78 end
81 end 79 end
82 end 80 end
test/unit/invitation_test.rb
@@ -60,6 +60,19 @@ class InvitationTest < ActiveSupport::TestCase @@ -60,6 +60,19 @@ class InvitationTest < ActiveSupport::TestCase
60 end 60 end
61 end 61 end
62 62
  63 + should 'not create task if the invited member is already a member of the community' do
  64 + person = fast_create(Person)
  65 + person.user = User.new(:email => 'current_user@email.invalid')
  66 + community = fast_create(Community)
  67 + user_to_invite = fast_create(User, :email => 'person_to_invite@email.invalid')
  68 + person_to_invite = fast_create(Person, :user_id => user_to_invite.id)
  69 + community.add_member(person_to_invite)
  70 +
  71 + assert_no_difference 'InviteMember.count' do
  72 + Invitation.invite(person, ['person_to_invite@email.invalid'], 'hello friend <url>', community)
  73 + end
  74 + end
  75 +
63 should 'not crash if the invited friend is already your friend in the environment' do 76 should 'not crash if the invited friend is already your friend in the environment' do
64 person = create_user('person').person 77 person = create_user('person').person
65 invited_friend = create_user('invited_friend').person 78 invited_friend = create_user('invited_friend').person