]> source.dussan.org Git - redmine.git/commitdiff
Fixed that values of custom fields are not kept in issues when copying a project...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 13 May 2013 19:52:37 +0000 (19:52 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 13 May 2013 19:52:37 +0000 (19:52 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11843 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/project.rb
test/unit/project_copy_test.rb

index 127362ff10b2d942cfbeb8a994038b47e5b9aada..915644c6b198994d41eca0351a3dcd00fac0c06d 100644 (file)
@@ -848,6 +848,9 @@ class Project < ActiveRecord::Base
       new_issue = Issue.new
       new_issue.copy_from(issue, :subtasks => false, :link => false)
       new_issue.project = self
+      # Changing project resets the custom field values
+      # TODO: handle this in Issue#project=
+      new_issue.custom_field_values = issue.custom_field_values.inject({}) {|h,v| h[v.custom_field_id] = v.value; h}
       # Reassign fixed_versions by name, since names are unique per project
       if issue.fixed_version && issue.fixed_version.project == project
         new_issue.fixed_version = self.versions.detect {|v| v.name == issue.fixed_version.name}
index 6b505b2b2e8bdd6b5279b09b3a31a067aacec998..893e6653fb0d69abfc1095cdf1bbf89a36ce2319 100644 (file)
@@ -69,6 +69,19 @@ class ProjectCopyTest < ActiveSupport::TestCase
     assert_equal "Closed", copied_issue.status.name
   end
 
+  test "#copy should copy issues custom values" do
+    field = IssueCustomField.generate!(:is_for_all => true, :trackers => Tracker.all)
+    issue = Issue.generate!(:project => @source_project, :subject => 'Custom field copy')
+    issue.custom_field_values = {field.id => 'custom'}
+    issue.save!
+    assert_equal 'custom', issue.reload.custom_field_value(field)
+
+    assert @project.copy(@source_project)
+    copy = @project.issues.find_by_subject('Custom field copy')
+    assert copy
+    assert_equal 'custom', copy.reload.custom_field_value(field)
+  end
+
   test "#copy should copy issues assigned to a locked version" do
     User.current = User.find(1)
     assigned_version = Version.generate!(:name => "Assigned Issues")