##// END OF EJS Templates
Merged r11508 from trunk (#13301)....
Jean-Philippe Lang -
r11286:33ef9fbe298d
parent child
Show More
@@ -131,6 +131,7 class User < Principal
131 131 def reload(*args)
132 132 @name = nil
133 133 @projects_by_role = nil
134 @membership_by_project_id = nil
134 135 super
135 136 end
136 137
@@ -415,6 +416,17 class User < Principal
415 416 !logged?
416 417 end
417 418
419 # Returns user's membership for the given project
420 # or nil if the user is not a member of project
421 def membership(project)
422 project_id = project.is_a?(Project) ? project.id : project
423
424 @membership_by_project_id ||= Hash.new {|h, project_id|
425 h[project_id] = memberships.where(:project_id => project_id).first
426 }
427 @membership_by_project_id[project_id]
428 end
429
418 430 # Return user's roles for project
419 431 def roles_for_project(project)
420 432 roles = []
@@ -422,7 +434,7 class User < Principal
422 434 return roles if project.nil? || project.archived?
423 435 if logged?
424 436 # Find project membership
425 membership = memberships.detect {|m| m.project_id == project.id}
437 membership = membership(project)
426 438 if membership
427 439 roles = membership.roles
428 440 else
@@ -727,6 +727,32 class UserTest < ActiveSupport::TestCase
727 727 assert_equal true, User.default_admin_account_changed?
728 728 end
729 729
730 def test_membership_with_project_should_return_membership
731 project = Project.find(1)
732
733 membership = @jsmith.membership(project)
734 assert_kind_of Member, membership
735 assert_equal @jsmith, membership.user
736 assert_equal project, membership.project
737 end
738
739 def test_membership_with_project_id_should_return_membership
740 project = Project.find(1)
741
742 membership = @jsmith.membership(1)
743 assert_kind_of Member, membership
744 assert_equal @jsmith, membership.user
745 assert_equal project, membership.project
746 end
747
748 def test_membership_for_non_member_should_return_nil
749 project = Project.find(1)
750
751 user = User.generate!
752 membership = user.membership(1)
753 assert_nil membership
754 end
755
730 756 def test_roles_for_project
731 757 # user with a role
732 758 roles = @jsmith.roles_for_project(Project.find(1))
General Comments 0
You need to be logged in to leave comments. Login now