]> source.dussan.org Git - redmine.git/commitdiff
Fixed: deleting a parent issue may lead to a stale object error (#7920).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 1 Apr 2011 18:42:41 +0000 (18:42 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 1 Apr 2011 18:42:41 +0000 (18:42 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5285 e93f8b46-1217-0410-a6f0-8f06a7374b81

test/unit/issue_nested_set_test.rb
vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb

index cf61cfdea8caf19d1792abd9dfa9c4294dcab63e..46f4dc4dd99454ab00592e3e2d3e7d8e024d4300 100644 (file)
@@ -223,6 +223,16 @@ class IssueNestedSetTest < ActiveSupport::TestCase
     assert_equal [issue1.id, 2, 3], [issue4.root_id, issue4.lft, issue4.rgt]
   end
   
+  def test_destroy_parent_issue_updated_during_children_destroy
+    parent = create_issue!
+    create_issue!(:start_date => Date.today, :parent_issue_id => parent.id)
+    create_issue!(:start_date => 2.days.from_now, :parent_issue_id => parent.id)
+    
+    assert_difference 'Issue.count', -3 do
+      Issue.find(parent.id).destroy
+    end
+  end
+  
   def test_destroy_child_issue_with_children
     root = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'root')
     child = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'child', :parent_issue_id => root.id)
index fc5278d693101ec9d36f98d1dcdccd19e5b2cc4f..b2ebd669c1b59a20d1d2f6905139b26b4e697dfe 100644 (file)
@@ -466,6 +466,9 @@ module CollectiveIdea #:nodoc:
               ["#{quoted_right_column_name} >= ?", right]
             )
           end
+          
+          # Reload is needed because children may have updated their parent (self) during deletion.
+          reload
         end
 
         # reload left, right, and parent