@@ -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