##// END OF EJS Templates
Additional roles of a user who belongs to a group are not always copied when copying the project (#7213)....
Jean-Philippe Lang -
r4495:ce8113dea2a7
parent child
Show More
@@ -740,7 +740,12 class Project < ActiveRecord::Base
740
740
741 # Copies members from +project+
741 # Copies members from +project+
742 def copy_members(project)
742 def copy_members(project)
743 project.memberships.each do |member|
743 # Copy users first, then groups to handle members with inherited and given roles
744 members_to_copy = []
745 members_to_copy += project.memberships.select {|m| m.principal.is_a?(User)}
746 members_to_copy += project.memberships.select {|m| !m.principal.is_a?(User)}
747
748 members_to_copy.each do |member|
744 new_member = Member.new
749 new_member = Member.new
745 new_member.attributes = member.attributes.dup.except("id", "project_id", "created_on")
750 new_member.attributes = member.attributes.dup.except("id", "project_id", "created_on")
746 # only copy non inherited roles
751 # only copy non inherited roles
@@ -770,6 +770,22 class ProjectTest < ActiveSupport::TestCase
770 assert_equal @project, membership.project
770 assert_equal @project, membership.project
771 end
771 end
772 end
772 end
773
774 should "copy memberships with groups and additional roles" do
775 group = Group.create!(:lastname => "Copy group")
776 user = User.find(7)
777 group.users << user
778 # group role
779 Member.create!(:project_id => @source_project.id, :principal => group, :role_ids => [2])
780 member = Member.find_by_user_id_and_project_id(user.id, @source_project.id)
781 # additional role
782 member.role_ids = [1]
783
784 assert @project.copy(@source_project)
785 member = Member.find_by_user_id_and_project_id(user.id, @project.id)
786 assert_not_nil member
787 assert_equal [1, 2], member.role_ids.sort
788 end
773
789
774 should "copy project specific queries" do
790 should "copy project specific queries" do
775 assert @project.valid?
791 assert @project.valid?
General Comments 0
You need to be logged in to leave comments. Login now