mirror of
https://github.com/meineerde/redmine.git
synced 2025-12-30 12:19:38 +00:00
Only consider open subtasks when computing the priority of a parent issue (#5880).
Patch by Go MAEDA. git-svn-id: http://svn.redmine.org/redmine/trunk@15064 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
b3663ee5c4
commit
f4b2b7e7fb
@ -1451,9 +1451,11 @@ class Issue < ActiveRecord::Base
|
||||
def recalculate_attributes_for(issue_id)
|
||||
if issue_id && p = Issue.find_by_id(issue_id)
|
||||
if p.priority_derived?
|
||||
# priority = highest priority of children
|
||||
if priority_position = p.children.joins(:priority).maximum("#{IssuePriority.table_name}.position")
|
||||
# priority = highest priority of open children
|
||||
if priority_position = p.children.open.joins(:priority).maximum("#{IssuePriority.table_name}.position")
|
||||
p.priority = IssuePriority.find_by_position(priority_position)
|
||||
else
|
||||
p.priority = IssuePriority.default
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -78,7 +78,7 @@ class IssueSubtaskingTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
def test_parent_priority_should_be_the_highest_child_priority
|
||||
def test_parent_priority_should_be_the_highest_open_child_priority
|
||||
with_settings :parent_issue_priority => 'derived' do
|
||||
parent = Issue.generate!(:priority => IssuePriority.find_by_name('Normal'))
|
||||
# Create children
|
||||
@ -88,14 +88,23 @@ class IssueSubtaskingTest < ActiveSupport::TestCase
|
||||
assert_equal 'Immediate', child1.reload.priority.name
|
||||
assert_equal 'Immediate', parent.reload.priority.name
|
||||
child3 = parent.generate_child!(:priority => IssuePriority.find_by_name('Low'))
|
||||
child4 = parent.generate_child!(:priority => IssuePriority.find_by_name('Urgent'))
|
||||
assert_equal 'Immediate', parent.reload.priority.name
|
||||
# Destroy a child
|
||||
child1.destroy
|
||||
assert_equal 'Urgent', parent.reload.priority.name
|
||||
# Close a child
|
||||
child4.status = IssueStatus.where(:is_closed => true).first
|
||||
child4.save!
|
||||
assert_equal 'Low', parent.reload.priority.name
|
||||
# Update a child
|
||||
child3.reload.priority = IssuePriority.find_by_name('Normal')
|
||||
child3.save!
|
||||
assert_equal 'Normal', parent.reload.priority.name
|
||||
# Reopen a child
|
||||
child4.status = IssueStatus.where(:is_closed => false).first
|
||||
child4.save!
|
||||
assert_equal 'Urgent', parent.reload.priority.name
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user