Fixed that custom values get saved when assigning custom values after changing to a tracker with different custom fields (#9737).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8103 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2011-12-06 22:20:49 +00:00
parent 9333853f23
commit a63027e175
2 changed files with 17 additions and 1 deletions

View 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?

View 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