diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2010-12-04 18:10:02 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2010-12-04 18:10:02 +0000 |
commit | 7fb0fe2e910a4188db283c359d9b1d05dad99041 (patch) | |
tree | 806966efe70a79f607ae69ba07ff1d5dbfe4c1ed | |
parent | 224921460a0a3d9c97813e4a64f0903adffff22f (diff) | |
download | redmine-7fb0fe2e910a4188db283c359d9b1d05dad99041.tar.gz redmine-7fb0fe2e910a4188db283c359d9b1d05dad99041.zip |
Safer code in IssueRelation (#7018).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4467 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/issue_relation.rb | 7 | ||||
-rw-r--r-- | test/unit/issue_relation_test.rb | 10 |
2 files changed, 14 insertions, 3 deletions
diff --git a/app/models/issue_relation.rb b/app/models/issue_relation.rb index b79592291..8f2db40f3 100644 --- a/app/models/issue_relation.rb +++ b/app/models/issue_relation.rb @@ -84,14 +84,15 @@ class IssueRelation < ActiveRecord::Base def set_issue_to_dates soonest_start = self.successor_soonest_start - if soonest_start + if soonest_start && issue_to issue_to.reschedule_after(soonest_start) end end def successor_soonest_start - return nil unless (TYPE_PRECEDES == self.relation_type) && (issue_from.start_date || issue_from.due_date) - (issue_from.due_date || issue_from.start_date) + 1 + delay + if (TYPE_PRECEDES == self.relation_type) && delay && issue_from && (issue_from.start_date || issue_from.due_date) + (issue_from.due_date || issue_from.start_date) + 1 + delay + end end def <=>(relation) diff --git a/test/unit/issue_relation_test.rb b/test/unit/issue_relation_test.rb index 6544c5203..f8859dfc6 100644 --- a/test/unit/issue_relation_test.rb +++ b/test/unit/issue_relation_test.rb @@ -63,4 +63,14 @@ class IssueRelationTest < ActiveSupport::TestCase assert_equal IssueRelation::TYPE_PRECEDES, relation.relation_type_for(from) assert_equal IssueRelation::TYPE_FOLLOWS, relation.relation_type_for(to) end + + def test_set_issue_to_dates_without_issue_to + r = IssueRelation.new(:issue_from => Issue.new(:start_date => Date.today), :relation_type => IssueRelation::TYPE_PRECEDES, :delay => 1) + assert_nil r.set_issue_to_dates + end + + def test_set_issue_to_dates_without_issues + r = IssueRelation.new(:relation_type => IssueRelation::TYPE_PRECEDES, :delay => 1) + assert_nil r.set_issue_to_dates + end end |