@@ -238,17 +238,21 class Issue < ActiveRecord::Base | |||
|
238 | 238 | write_attribute(:description, arg) |
|
239 | 239 | end |
|
240 | 240 | |
|
241 |
# Overrides attributes= so that tracker |
|
|
242 | def attributes_with_tracker_first=(new_attributes, *args) | |
|
241 | # Overrides attributes= so that project and tracker get assigned first | |
|
242 | def attributes_with_project_and_tracker_first=(new_attributes, *args) | |
|
243 | 243 | return if new_attributes.nil? |
|
244 | new_tracker_id = new_attributes['tracker_id'] || new_attributes[:tracker_id] | |
|
245 | if new_tracker_id | |
|
246 | self.tracker_id = new_tracker_id | |
|
244 | attrs = new_attributes.dup | |
|
245 | attrs.stringify_keys! | |
|
246 | ||
|
247 | %w(project project_id tracker tracker_id).each do |attr| | |
|
248 | if attrs.has_key?(attr) | |
|
249 | send "#{attr}=", attrs.delete(attr) | |
|
250 | end | |
|
247 | 251 | end |
|
248 |
send :attributes_without_tracker_first=, |
|
|
252 | send :attributes_without_project_and_tracker_first=, attrs, *args | |
|
249 | 253 | end |
|
250 | 254 | # Do not redefine alias chain on reload (see #4838) |
|
251 | alias_method_chain(:attributes=, :tracker_first) unless method_defined?(:attributes_without_tracker_first=) | |
|
255 | alias_method_chain(:attributes=, :project_and_tracker_first) unless method_defined?(:attributes_without_project_and_tracker_first=) | |
|
252 | 256 | |
|
253 | 257 | def estimated_hours=(h) |
|
254 | 258 | write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h) |
@@ -279,10 +279,7 class IssueTest < ActiveSupport::TestCase | |||
|
279 | 279 | end |
|
280 | 280 | |
|
281 | 281 | def test_should_not_update_custom_fields_on_changing_tracker_with_different_custom_fields |
|
282 | issue = Issue.new(:project_id => 1) | |
|
283 | issue.attributes = {:tracker_id => 1, :author_id => 1, :status_id => 1, :subject => 'Test', :custom_field_values => {'2' => 'Test'}} | |
|
284 | issue.save! | |
|
285 | ||
|
282 | issue = Issue.create!(:project_id => 1, :tracker_id => 1, :author_id => 1, :status_id => 1, :subject => 'Test', :custom_field_values => {'2' => 'Test'}) | |
|
286 | 283 | assert !Tracker.find(2).custom_field_ids.include?(2) |
|
287 | 284 | |
|
288 | 285 | issue = Issue.find(issue.id) |
@@ -301,7 +298,16 class IssueTest < ActiveSupport::TestCase | |||
|
301 | 298 | assert issue.custom_field_values.any? |
|
302 | 299 | end |
|
303 | 300 | |
|
304 |
def test_assigning_attributes_should_assign_tracker |
|
|
301 | def test_assigning_attributes_should_assign_project_and_tracker_first | |
|
302 | seq = sequence('seq') | |
|
303 | issue = Issue.new | |
|
304 | issue.expects(:project_id=).in_sequence(seq) | |
|
305 | issue.expects(:tracker_id=).in_sequence(seq) | |
|
306 | issue.expects(:subject=).in_sequence(seq) | |
|
307 | issue.attributes = {:tracker_id => 2, :project_id => 1, :subject => 'Test'} | |
|
308 | end | |
|
309 | ||
|
310 | def test_assigning_tracker_and_custom_fields_should_assign_custom_fields | |
|
305 | 311 | attributes = ActiveSupport::OrderedHash.new |
|
306 | 312 | attributes['custom_field_values'] = { '1' => 'MySQL' } |
|
307 | 313 | attributes['tracker_id'] = '1' |
General Comments 0
You need to be logged in to leave comments.
Login now