]> source.dussan.org Git - redmine.git/commitdiff
Fixed: subtasks don't resepect following/precedes relations on creation (#12968).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 17 Mar 2013 13:46:20 +0000 (13:46 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 17 Mar 2013 13:46:20 +0000 (13:46 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11640 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue.rb
test/unit/issue_test.rb

index 96e0326e27e39f48945ce59ab0cc8a97e2b8132c..aed727ae097f6065d066001473ee121ac51c9935 100644 (file)
@@ -892,7 +892,7 @@ class Issue < ActiveRecord::Base
     @soonest_start = nil if reload
     @soonest_start ||= (
         relations_to(reload).collect{|relation| relation.successor_soonest_start} +
-        ancestors.collect(&:soonest_start)
+        [(@parent_issue || parent).try(:soonest_start)]
       ).compact.max
   end
 
index 79aadf139a2609386f81873214ba85ff2a46264a..905d5483e79124ffa865e399d6b2a6dcd650011a 100644 (file)
@@ -1512,6 +1512,25 @@ class IssueTest < ActiveSupport::TestCase
     end
   end
 
+  def test_child_issue_should_consider_parent_soonest_start_on_create
+    set_language_if_valid 'en'
+    issue1 = Issue.generate!(:start_date => '2012-10-15', :due_date => '2012-10-17')
+    issue2 = Issue.generate!(:start_date => '2012-10-18', :due_date => '2012-10-20')
+    IssueRelation.create!(:issue_from => issue1, :issue_to => issue2,
+                          :relation_type => IssueRelation::TYPE_PRECEDES)
+    issue1.reload
+    issue2.reload
+    assert_equal Date.parse('2012-10-18'), issue2.start_date
+
+    child = Issue.new(:parent_issue_id => issue2.id, :start_date => '2012-10-16',
+      :project_id => 1, :tracker_id => 1, :status_id => 1, :subject => 'Child', :author_id => 1)
+    assert !child.valid?
+    assert_include 'Start date is invalid', child.errors.full_messages
+    assert_equal Date.parse('2012-10-18'), child.soonest_start
+    child.start_date = '2012-10-18'
+    assert child.save
+  end
+
   def test_overdue
     assert Issue.new(:due_date => 1.day.ago.to_date).overdue?
     assert !Issue.new(:due_date => Date.today).overdue?