]> source.dussan.org Git - redmine.git/commitdiff
Fixed that custom values get saved when assigning custom values after changing to...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 6 Dec 2011 22:20:49 +0000 (22:20 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 6 Dec 2011 22:20:49 +0000 (22:20 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8103 e93f8b46-1217-0410-a6f0-8f06a7374b81

test/unit/issue_test.rb
vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb

index c769c0c31d0a822bb3b103f573ab69608166ce1a..d006d7b424f11630dde69d82f66ad71ddffe65ab 100644 (file)
@@ -278,6 +278,22 @@ class IssueTest < ActiveSupport::TestCase
     assert_equal custom_value.id, issue.custom_value_for(field).id
   end
 
+  def test_should_not_update_custom_fields_on_changing_tracker_with_different_custom_fields
+    issue = Issue.new(:project_id => 1)
+    issue.attributes = {:tracker_id => 1, :author_id => 1, :status_id => 1, :subject => 'Test', :custom_field_values => {'2' => 'Test'}}
+    issue.save!
+
+    assert !Tracker.find(2).custom_field_ids.include?(2)
+
+    issue = Issue.find(issue.id)
+    issue.attributes = {:tracker_id => 2, :custom_field_values => {'1' => ''}}
+
+    issue = Issue.find(issue.id)
+    custom_value = issue.custom_value_for(2)
+    assert_not_nil custom_value
+    assert_equal 'Test', custom_value.value
+  end
+
   def test_assigning_tracker_id_should_reload_custom_fields_values
     issue = Issue.new(:project => Project.find(1))
     assert issue.custom_field_values.empty?
index a09dffbb52c41553c352c317a080819bb4b94179..f6c036a1feb6a04a40703205f7ac6b5e8dd6ddac 100644 (file)
@@ -71,7 +71,6 @@ module Redmine
           custom_field_values.each do |custom_value|
             custom_value.value = values[custom_value.custom_field_id.to_s] if values.has_key?(custom_value.custom_field_id.to_s)
           end if values.is_a?(Hash)
-          self.custom_values = custom_field_values
         end
         
         def custom_field_values
@@ -92,6 +91,7 @@ module Redmine
         end
         
         def save_custom_field_values
+          self.custom_values = custom_field_values
           custom_field_values.each(&:save)
           @custom_field_values_changed = false
           @custom_field_values = nil