Commit 4ee05c1c041534ecc40d3f132a04523784de49c2

Authored by Larissa Reis
1 parent b2294d44

Filter only profile related roles

app/controllers/my_profile/memberships_controller.rb
@@ -3,7 +3,10 @@ class MembershipsController < MyProfileController @@ -3,7 +3,10 @@ class MembershipsController < MyProfileController
3 protect 'manage_memberships', :profile 3 protect 'manage_memberships', :profile
4 4
5 def index 5 def index
6 - @roles = environment.roles.select{ |role| profile.role_assignments.find_by_role_id(role.id).present? } 6 + @roles = environment.roles.select do |role|
  7 + ra = profile.role_assignments.find_by_role_id(role.id)
  8 + ra.present? && ra.resource_type == 'Profile'
  9 + end
7 @filter = params[:filter_type].blank? ? nil : params[:filter_type] 10 @filter = params[:filter_type].blank? ? nil : params[:filter_type]
8 begin 11 begin
9 @memberships = @filter.nil? ? profile.memberships : profile.memberships_by_role(environment.roles.find(@filter)) 12 @memberships = @filter.nil? ? profile.memberships : profile.memberships_by_role(environment.roles.find(@filter))
test/functional/memberships_controller_test.rb
@@ -318,4 +318,20 @@ class MembershipsControllerTest < ActionController::TestCase @@ -318,4 +318,20 @@ class MembershipsControllerTest < ActionController::TestCase
318 assert_not_includes assigns(:roles), role2 318 assert_not_includes assigns(:roles), role2
319 end 319 end
320 320
  321 + should 'only show roles related to profiles' do
  322 + c1 = fast_create(Community, :name => 'First community')
  323 + role1 = Role.create!(:name => 'profile_role', :permissions => ['edit_profile'], :environment => c1.environment)
  324 + role2 = Role.create!(:name => 'environment_role', :permissions => ['edit_profile'], :environment => c1.environment)
  325 +
  326 + person = Person['testuser']
  327 + c1.add_member(person)
  328 + person.add_role(role2, c1.environment)
  329 + person.add_role(role1, c1)
  330 +
  331 + login_as('testuser')
  332 + get :index, :profile => 'testuser'
  333 +
  334 + assert_includes assigns(:roles), role1
  335 + assert_not_includes assigns(:roles), role2
  336 + end
321 end 337 end