Commit 318505132d9a9715f707c17f3614adce936627e6
1 parent
a70da834
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Refactory add_members() profile method and break them into two methods. Created …
…functional test to this refactory
Showing
4 changed files
with
45 additions
and
26 deletions
Show diff stats
app/models/profile.rb
| @@ -665,29 +665,26 @@ private :generate_url, :url_options | @@ -665,29 +665,26 @@ private :generate_url, :url_options | ||
| 665 | end | 665 | end |
| 666 | end | 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 | unless people_ids.nil? && people_ids.empty? | 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 | end | 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 | end | 688 | end |
| 692 | end | 689 | end |
| 693 | 690 |
lib/add_members_job.rb
| @@ -4,7 +4,12 @@ class AddMembersJob < Struct.new(:people_ids, :profile_id, :locale) | @@ -4,7 +4,12 @@ class AddMembersJob < Struct.new(:people_ids, :profile_id, :locale) | ||
| 4 | Noosfero.with_locale(locale) do | 4 | Noosfero.with_locale(locale) do |
| 5 | 5 | ||
| 6 | profile = Profile.find(profile_id) | 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 | end | 14 | end |
| 10 | end | 15 | end |
test/functional/invite_controller_test.rb
| @@ -284,11 +284,6 @@ class InviteControllerTest < ActionController::TestCase | @@ -284,11 +284,6 @@ class InviteControllerTest < ActionController::TestCase | ||
| 284 | assert_empty json_response | 284 | assert_empty json_response |
| 285 | end | 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 | should 'invite registered users through profile id' do | 287 | should 'invite registered users through profile id' do |
| 293 | friend1 = create_user('testuser1').person | 288 | friend1 = create_user('testuser1').person |
| 294 | friend2 = create_user('testuser2').person | 289 | friend2 = create_user('testuser2').person |
| @@ -302,7 +297,7 @@ class InviteControllerTest < ActionController::TestCase | @@ -302,7 +297,7 @@ class InviteControllerTest < ActionController::TestCase | ||
| 302 | end | 297 | end |
| 303 | end | 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 | #Add user like a environment admin | 302 | #Add user like a environment admin |
| 308 | Environment.default.add_admin profile | 303 | Environment.default.add_admin profile |
| @@ -313,7 +308,29 @@ class InviteControllerTest < ActionController::TestCase | @@ -313,7 +308,29 @@ class InviteControllerTest < ActionController::TestCase | ||
| 313 | assert_difference 'Delayed::Job.count', 1 do | 308 | assert_difference 'Delayed::Job.count', 1 do |
| 314 | assert_equal 0,community.members.count | 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 | assert_response :redirect | 335 | assert_response :redirect |
| 319 | assert_redirected_to :controller => 'profile', :action => 'members' | 336 | assert_redirected_to :controller => 'profile', :action => 'members' |
vendor/plugins/access_control/lib/acts_as_accessible.rb
| @@ -19,9 +19,9 @@ module ActsAsAccessible | @@ -19,9 +19,9 @@ module ActsAsAccessible | ||
| 19 | nil | 19 | nil |
| 20 | end | 20 | end |
| 21 | 21 | ||
| 22 | - def affiliate(accessor, roles) | 22 | + def affiliate(accessor, roles, attributes = {}) |
| 23 | roles = [roles] unless roles.kind_of?(Array) | 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 | end | 25 | end |
| 26 | 26 | ||
| 27 | def disaffiliate(accessor, roles) | 27 | def disaffiliate(accessor, roles) |