summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2013-03-26 21:31:29 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2013-03-26 21:31:29 +0000
commited5b14884c016208510b713556bc129407aaf4e5 (patch)
tree2880ae273c504b6f3b9bc373bd3707f5bced97bb
parentde68231632348f9c345ef883bdd3465a38c073ca (diff)
downloadredmine-ed5b14884c016208510b713556bc129407aaf4e5.tar.gz
redmine-ed5b14884c016208510b713556bc129407aaf4e5.zip
Fixed that r11641 prevents precedes/follows relations between subtasks (#13586).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11692 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/models/issue.rb8
-rw-r--r--test/unit/issue_relation_test.rb13
2 files changed, 19 insertions, 2 deletions
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 2e7732089..ce1fa75d5 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -859,10 +859,14 @@ class Issue < ActiveRecord::Base
dependencies = []
dependencies += relations_from.map(&:issue_to)
dependencies += children unless leaf?
- dependencies << parent
dependencies.compact!
dependencies -= except
- dependencies + dependencies.map {|issue| issue.all_dependent_issues(except)}.flatten
+ dependencies += dependencies.map {|issue| issue.all_dependent_issues(except)}.flatten
+ if parent
+ dependencies << parent
+ dependencies += parent.all_dependent_issues(except + parent.descendants)
+ end
+ dependencies
end
# Returns an array of issues that duplicate this one
diff --git a/test/unit/issue_relation_test.rb b/test/unit/issue_relation_test.rb
index f15a74c34..f0e74faf7 100644
--- a/test/unit/issue_relation_test.rb
+++ b/test/unit/issue_relation_test.rb
@@ -137,6 +137,19 @@ class IssueRelationTest < ActiveSupport::TestCase
assert_include 'This relation would create a circular dependency', r.errors.full_messages
end
+ def test_subtasks_should_allow_precedes_relation
+ parent = Issue.generate!
+ child1 = Issue.generate!(:parent_issue_id => parent.id)
+ child2 = Issue.generate!(:parent_issue_id => parent.id)
+
+ r = IssueRelation.new(
+ :issue_from => child1, :issue_to => child2,
+ :relation_type => IssueRelation::TYPE_PRECEDES
+ )
+ assert r.valid?
+ assert r.save
+ end
+
def test_validates_circular_dependency_on_reverse_relations
IssueRelation.delete_all
assert IssueRelation.create!(