Commit 318505132d9a9715f707c17f3614adce936627e6

Authored by Michel Felipe
1 parent a70da834

Refactory add_members() profile method and break them into two methods. Created …

…functional test to this refactory
app/models/profile.rb
... ... @@ -665,29 +665,26 @@ private :generate_url, :url_options
665 665 end
666 666 end
667 667  
668   - # Adds many people to profile by id's or email's
669   - def add_members(people_ids)
  668 + # Adds many people to profile by id's
  669 + def add_members_by_id(people_ids)
670 670  
671 671 unless people_ids.nil? && people_ids.empty?
672   - people = []
673 672  
674   - if people_ids.first =~ /\@/
675   - people = User.where(email: people_ids)
676   - else
677   - people = Person.where(id: people_ids)
  673 + people = Person.where(id: people_ids)
  674 + people.each do |person|
  675 +
  676 + add_member(person) unless person.is_member_of?(self)
678 677 end
  678 + end
  679 + end
679 680  
680   - people.each do |profile|
681   - person = profile
  681 + # Adds many people to profile by email's
  682 + def add_members_by_email(people_emails)
682 683  
683   - if profile.is_a? User
684   - person = profile.person
685   - end
  684 + people = User.where(email: people_emails)
  685 + people.each do |user|
686 686  
687   - unless person.is_member_of?(self)
688   - add_member person
689   - end
690   - end
  687 + add_member(user.person) unless user.person.is_member_of?(self)
691 688 end
692 689 end
693 690  
... ...
lib/add_members_job.rb
... ... @@ -4,7 +4,12 @@ class AddMembersJob < Struct.new(:people_ids, :profile_id, :locale)
4 4 Noosfero.with_locale(locale) do
5 5  
6 6 profile = Profile.find(profile_id)
7   - profile.add_members people_ids
  7 +
  8 + if people_ids.first =~ /\@/
  9 + profile.add_members_by_email people_ids
  10 + else
  11 + profile.add_members_by_id people_ids
  12 + end
8 13  
9 14 end
10 15 end
... ...
test/functional/invite_controller_test.rb
... ... @@ -284,11 +284,6 @@ class InviteControllerTest < ActionController::TestCase
284 284 assert_empty json_response
285 285 end
286 286  
287   - #@todo Copy this test and create a another version
288   - #of this, for test add members in a community
289   - #logged as admin of environment!
290   - # #issue227
291   - #
292 287 should 'invite registered users through profile id' do
293 288 friend1 = create_user('testuser1').person
294 289 friend2 = create_user('testuser2').person
... ... @@ -302,7 +297,7 @@ class InviteControllerTest < ActionController::TestCase
302 297 end
303 298 end
304 299  
305   - should 'add registered users imediatly instead invite if logged user is a environment admin' do
  300 + should 'add registered users by id imediatly instead invite if logged user is a environment admin' do
306 301  
307 302 #Add user like a environment admin
308 303 Environment.default.add_admin profile
... ... @@ -313,7 +308,29 @@ class InviteControllerTest < ActionController::TestCase
313 308 assert_difference 'Delayed::Job.count', 1 do
314 309 assert_equal 0,community.members.count
315 310  
316   - post :invite_registered_friend, :profile => @community.identifier, :q => [friend1.id,friend2.id]
  311 + post :invite_registered_friend, :profile => @community.identifier, :q => "#{friend1.id},#{friend2.id}"
  312 +
  313 + assert_response :redirect
  314 + assert_redirected_to :controller => 'profile', :action => 'members'
  315 + end
  316 +
  317 + Delayed::Worker.new.run(Delayed::Job.last)
  318 +
  319 + assert_equal 2,community.members.count
  320 +
  321 + end
  322 +
  323 + should 'add registered users by email imediatly instead invite if logged user is a environment admin' do
  324 +
  325 + Environment.default.add_admin profile
  326 +
  327 + friend1 = create_user('testuser1', {email: 'friend1@test.com.br'})
  328 + friend2 = create_user('testuser2', {email: 'friend2@test.com.br'})
  329 +
  330 + assert_difference 'Delayed::Job.count', 1 do
  331 + assert_equal 0,community.members.count
  332 +
  333 + post :invite_registered_friend, :profile => @community.identifier, :q => "#{friend1.email},#{friend2.email}"
317 334  
318 335 assert_response :redirect
319 336 assert_redirected_to :controller => 'profile', :action => 'members'
... ...
vendor/plugins/access_control/lib/acts_as_accessible.rb
... ... @@ -19,9 +19,9 @@ module ActsAsAccessible
19 19 nil
20 20 end
21 21  
22   - def affiliate(accessor, roles)
  22 + def affiliate(accessor, roles, attributes = {})
23 23 roles = [roles] unless roles.kind_of?(Array)
24   - roles.map {|role| accessor.add_role(role, self)}.any?
  24 + roles.map {|role| accessor.add_role(role, self, attributes)}.any?
25 25 end
26 26  
27 27 def disaffiliate(accessor, roles)
... ...