]> source.dussan.org Git - redmine.git/commitdiff
Safer code in IssueRelation (#7018).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 4 Dec 2010 18:10:02 +0000 (18:10 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 4 Dec 2010 18:10:02 +0000 (18:10 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4467 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue_relation.rb
test/unit/issue_relation_test.rb

index b79592291ec9b5647ce7da3b447a1bd6413ca9a8..8f2db40f3198bc82f392f01c301d3b372a60a375 100644 (file)
@@ -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)
index 6544c52039ddebdc6d1d541fe2fd99867666598c..f8859dfc6f138274b96dab122186362898331355 100644 (file)
@@ -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