Fixes tracker_id and custom_field_values assignment order for issues (#4353).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3139 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
1de2a0b7c7
commit
f2520385e4
|
@ -142,8 +142,22 @@ class Issue < ActiveRecord::Base
|
||||||
def tracker_id=(tid)
|
def tracker_id=(tid)
|
||||||
self.tracker = nil
|
self.tracker = nil
|
||||||
write_attribute(:tracker_id, tid)
|
write_attribute(:tracker_id, tid)
|
||||||
|
result = write_attribute(:tracker_id, tid)
|
||||||
|
@custom_field_values = nil
|
||||||
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Overrides attributes= so that tracker_id gets assigned first
|
||||||
|
def attributes_with_tracker_first=(new_attributes, *args)
|
||||||
|
return if new_attributes.nil?
|
||||||
|
new_tracker_id = new_attributes['tracker_id'] || new_attributes[:tracker_id]
|
||||||
|
if new_tracker_id
|
||||||
|
self.tracker_id = new_tracker_id
|
||||||
|
end
|
||||||
|
self.attributes_without_tracker_first = new_attributes, *args
|
||||||
|
end
|
||||||
|
alias_method_chain :attributes=, :tracker_first
|
||||||
|
|
||||||
def estimated_hours=(h)
|
def estimated_hours=(h)
|
||||||
write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h)
|
write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h)
|
||||||
end
|
end
|
||||||
|
|
|
@ -164,6 +164,23 @@ class IssueTest < ActiveSupport::TestCase
|
||||||
assert_equal custom_value.id, issue.custom_value_for(field).id
|
assert_equal custom_value.id, issue.custom_value_for(field).id
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_assigning_tracker_id_should_reload_custom_fields_values
|
||||||
|
issue = Issue.new(:project => Project.find(1))
|
||||||
|
assert issue.custom_field_values.empty?
|
||||||
|
issue.tracker_id = 1
|
||||||
|
assert issue.custom_field_values.any?
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_assigning_attributes_should_assign_tracker_id_first
|
||||||
|
attributes = ActiveSupport::OrderedHash.new
|
||||||
|
attributes['custom_field_values'] = { '1' => 'MySQL' }
|
||||||
|
attributes['tracker_id'] = '1'
|
||||||
|
issue = Issue.new(:project => Project.find(1))
|
||||||
|
issue.attributes = attributes
|
||||||
|
assert_not_nil issue.custom_value_for(1)
|
||||||
|
assert_equal 'MySQL', issue.custom_value_for(1).value
|
||||||
|
end
|
||||||
|
|
||||||
def test_should_update_issue_with_disabled_tracker
|
def test_should_update_issue_with_disabled_tracker
|
||||||
p = Project.find(1)
|
p = Project.find(1)
|
||||||
issue = Issue.find(1)
|
issue = Issue.find(1)
|
||||||
|
|
Loading…
Reference in New Issue