Safer code in IssueRelation (#7018).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4467 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2010-12-04 18:10:02 +00:00
parent 224921460a
commit 7fb0fe2e91
2 changed files with 14 additions and 3 deletions

View File

@ -84,15 +84,16 @@ class IssueRelation < ActiveRecord::Base
def set_issue_to_dates def set_issue_to_dates
soonest_start = self.successor_soonest_start soonest_start = self.successor_soonest_start
if soonest_start if soonest_start && issue_to
issue_to.reschedule_after(soonest_start) issue_to.reschedule_after(soonest_start)
end end
end end
def successor_soonest_start def successor_soonest_start
return nil unless (TYPE_PRECEDES == self.relation_type) && (issue_from.start_date || issue_from.due_date) 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 (issue_from.due_date || issue_from.start_date) + 1 + delay
end end
end
def <=>(relation) def <=>(relation)
TYPES[self.relation_type][:order] <=> TYPES[relation.relation_type][:order] TYPES[self.relation_type][:order] <=> TYPES[relation.relation_type][:order]

View File

@ -63,4 +63,14 @@ class IssueRelationTest < ActiveSupport::TestCase
assert_equal IssueRelation::TYPE_PRECEDES, relation.relation_type_for(from) assert_equal IssueRelation::TYPE_PRECEDES, relation.relation_type_for(from)
assert_equal IssueRelation::TYPE_FOLLOWS, relation.relation_type_for(to) assert_equal IssueRelation::TYPE_FOLLOWS, relation.relation_type_for(to)
end 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 end