@@ -455,11 +455,11 class Issue < ActiveRecord::Base | |||||
455 | (relations_from + relations_to).sort |
|
455 | (relations_from + relations_to).sort | |
456 | end |
|
456 | end | |
457 |
|
457 | |||
458 |
def all_dependent_issues(except= |
|
458 | def all_dependent_issues(except=[]) | |
459 |
except |
|
459 | except << self | |
460 | dependencies = [] |
|
460 | dependencies = [] | |
461 | relations_from.each do |relation| |
|
461 | relations_from.each do |relation| | |
462 |
if relation.issue_to && relation.issue_to |
|
462 | if relation.issue_to && !except.include?(relation.issue_to) | |
463 | dependencies << relation.issue_to |
|
463 | dependencies << relation.issue_to | |
464 | dependencies += relation.issue_to.all_dependent_issues(except) |
|
464 | dependencies += relation.issue_to.all_dependent_issues(except) | |
465 | end |
|
465 | end |
@@ -686,6 +686,18 class IssueTest < ActiveSupport::TestCase | |||||
686 |
|
686 | |||
687 | assert_equal [2, 3], Issue.find(1).all_dependent_issues.collect(&:id).sort |
|
687 | assert_equal [2, 3], Issue.find(1).all_dependent_issues.collect(&:id).sort | |
688 | end |
|
688 | end | |
|
689 | ||||
|
690 | def test_all_dependent_issues_with_persistent_multiple_circular_dependencies | |||
|
691 | IssueRelation.delete_all | |||
|
692 | assert IssueRelation.create!(:issue_from => Issue.find(1), :issue_to => Issue.find(2), :relation_type => IssueRelation::TYPE_RELATES) | |||
|
693 | assert IssueRelation.create!(:issue_from => Issue.find(2), :issue_to => Issue.find(3), :relation_type => IssueRelation::TYPE_RELATES) | |||
|
694 | assert IssueRelation.create!(:issue_from => Issue.find(3), :issue_to => Issue.find(8), :relation_type => IssueRelation::TYPE_RELATES) | |||
|
695 | # Validation skipping | |||
|
696 | assert IssueRelation.new(:issue_from => Issue.find(8), :issue_to => Issue.find(2), :relation_type => IssueRelation::TYPE_RELATES).save(false) | |||
|
697 | assert IssueRelation.new(:issue_from => Issue.find(3), :issue_to => Issue.find(1), :relation_type => IssueRelation::TYPE_RELATES).save(false) | |||
|
698 | ||||
|
699 | assert_equal [2, 3, 8], Issue.find(1).all_dependent_issues.collect(&:id).sort | |||
|
700 | end | |||
689 |
|
701 | |||
690 | context "#done_ratio" do |
|
702 | context "#done_ratio" do | |
691 | setup do |
|
703 | setup do |
General Comments 0
You need to be logged in to leave comments.
Login now