##// END OF EJS Templates
Do not build a projects_by_role Hash that gets updated when accessing a key that is not present (#11662)....
Jean-Philippe Lang -
r10059:d33fa1f8c87f
parent child
Show More
@@ -418,10 +418,13 class User < Principal
418 def projects_by_role
418 def projects_by_role
419 return @projects_by_role if @projects_by_role
419 return @projects_by_role if @projects_by_role
420
420
421 @projects_by_role = Hash.new {|h,k| h[k]=[]}
421 @projects_by_role = Hash.new([])
422 memberships.each do |membership|
422 memberships.each do |membership|
423 if membership.project
423 membership.roles.each do |role|
424 membership.roles.each do |role|
424 @projects_by_role[role] << membership.project if membership.project
425 @projects_by_role[role] = [] unless @projects_by_role.key?(role)
426 @projects_by_role[role] << membership.project
427 end
425 end
428 end
426 end
429 end
427 @projects_by_role.each do |role, projects|
430 @projects_by_role.each do |role, projects|
@@ -744,6 +744,13 class UserTest < ActiveSupport::TestCase
744 assert_equal [2], user.projects_by_role[Role.find(2)].collect(&:id).sort
744 assert_equal [2], user.projects_by_role[Role.find(2)].collect(&:id).sort
745 end
745 end
746
746
747 def test_accessing_projects_by_role_with_no_projects_should_return_an_empty_array
748 user = User.find(2)
749 assert_equal [], user.projects_by_role[Role.find(3)]
750 # should not update the hash
751 assert_nil user.projects_by_role.values.detect(&:blank?)
752 end
753
747 def test_projects_by_role_for_user_with_no_role
754 def test_projects_by_role_for_user_with_no_role
748 user = User.generate!
755 user = User.generate!
749 assert_equal({}, user.projects_by_role)
756 assert_equal({}, user.projects_by_role)
General Comments 0
You need to be logged in to leave comments. Login now