From faeab49783ef9cbb54664def6b922b780051175c Mon Sep 17 00:00:00 2001 From: Joenio Costa Date: Mon, 20 Apr 2009 12:00:04 -0300 Subject: [PATCH] ActionItem1027: fix remove member of community --- app/controllers/my_profile/profile_members_controller.rb | 16 ++++++++++------ test/functional/profile_members_controller_test.rb | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/app/controllers/my_profile/profile_members_controller.rb b/app/controllers/my_profile/profile_members_controller.rb index 7487695..abbb3e7 100644 --- a/app/controllers/my_profile/profile_members_controller.rb +++ b/app/controllers/my_profile/profile_members_controller.rb @@ -47,12 +47,16 @@ class ProfileMembersController < MyProfileController end def unassociate - @association = RoleAssignment.find(params[:id]) - if @association.destroy - flash[:notice] = 'Member succefully unassociated' - else - flash[:notice] = 'Failed to unassociate member' + member = Person.find(params[:id]) + associations = member.find_roles(profile) + RoleAssignment.transaction do + if associations.map(&:destroy) + flash[:notice] = 'Member succefully unassociated' + else + flash[:notice] = 'Failed to unassociate member' + end end - redirect_to :aciton => 'index' + redirect_to :action => 'index' end + end diff --git a/test/functional/profile_members_controller_test.rb b/test/functional/profile_members_controller_test.rb index 98e17c7..c4de14b 100644 --- a/test/functional/profile_members_controller_test.rb +++ b/test/functional/profile_members_controller_test.rb @@ -79,4 +79,22 @@ class ProfileMembersControllerTest < Test::Unit::TestCase assert_includes roles, role2 assert_not_includes roles, role1 end + + should 'unassociate community member' do + com = Community.create!(:identifier => 'test_community', :name => 'test community') + admin = create_user_with_permission('admin_user', 'manage_memberships', com) + member = create_user('test_member').person + com.add_member(member) + assert_includes com.members, member + + login_as :admin_user + get :unassociate, :profile => com.identifier, :id => member + + assert_response :redirect + assert_redirected_to :action => 'index' + member.reload + com.reload + assert_not_includes com.members, member + end + end -- libgit2 0.21.2