Defect #5524 ยป 5524_svn.diff
test/unit/issue_nested_set_test.rb (working copy) | ||
---|---|---|
273 | 273 |
assert_equal 12, parent.reload.estimated_hours |
274 | 274 |
end |
275 | 275 | |
276 |
def test_move_parent_updates_old_parent_attributes |
|
277 |
first_parent = create_issue! |
|
278 |
second_parent = create_issue! |
|
279 |
child = create_issue!(:estimated_hours => 5, :parent_issue_id => first_parent.id) |
|
280 |
assert_equal 5, first_parent.reload.estimated_hours |
|
281 |
child.update_attributes(:estimated_hours => 7, :parent_issue_id => second_parent.id) |
|
282 |
assert_equal 7, second_parent.reload.estimated_hours |
|
283 |
assert_nil first_parent.reload.estimated_hours |
|
284 |
end |
|
276 | 285 | |
277 | 286 |
def test_reschuling_a_parent_should_reschedule_subtasks |
278 | 287 |
parent = create_issue! |
app/models/issue.rb (working copy) | ||
---|---|---|
629 | 629 |
end |
630 | 630 |
reload |
631 | 631 |
elsif parent_issue_id != parent_id |
632 |
former_parent_id = parent_id |
|
632 | 633 |
# moving an existing issue |
633 | 634 |
if @parent_issue && @parent_issue.root_id == root_id |
634 | 635 |
# inside the same tree |
... | ... | |
658 | 659 |
relation.destroy unless relation.valid? |
659 | 660 |
end |
660 | 661 |
end |
662 |
# update former parent |
|
663 |
recalculate_attributes_for(former_parent_id) if former_parent_id |
|
661 | 664 |
end |
662 | 665 |
remove_instance_variable(:@parent_issue) if instance_variable_defined?(:@parent_issue) |
663 | 666 |
end |
664 | 667 |
|
665 | 668 |
def update_parent_attributes |
666 |
if parent_id && p = Issue.find_by_id(parent_id) |
|
669 |
recalculate_attributes_for(parent_id) if parent_id |
|
670 |
end |
|
671 | ||
672 |
def recalculate_attributes_for(issue_id) |
|
673 |
if issue_id && p = Issue.find_by_id(issue_id) |
|
667 | 674 |
# priority = highest priority of children |
668 | 675 |
if priority_position = p.children.maximum("#{IssuePriority.table_name}.position", :include => :priority) |
669 | 676 |
p.priority = IssuePriority.find_by_position(priority_position) |