Fixed: bulk destroying parent and child issues raises a stale object error (#7920).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5283 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
516320e82b
commit
4e7835c68c
|
@ -236,7 +236,13 @@ class IssuesController < ApplicationController
|
|||
return unless api_request?
|
||||
end
|
||||
end
|
||||
@issues.each(&:destroy)
|
||||
@issues.each do |issue|
|
||||
begin
|
||||
issue.reload.destroy
|
||||
rescue ::ActiveRecord::RecordNotFound # raised by #reload if issue no longer exists
|
||||
# nothing to do, issue was already deleted (eg. by a parent)
|
||||
end
|
||||
end
|
||||
respond_to do |format|
|
||||
format.html { redirect_back_or_default(:action => 'index', :project_id => @project) }
|
||||
format.api { head :ok }
|
||||
|
|
|
@ -1323,6 +1323,18 @@ class IssuesControllerTest < ActionController::TestCase
|
|||
assert !(Issue.find_by_id(1) || Issue.find_by_id(2) || Issue.find_by_id(6))
|
||||
end
|
||||
|
||||
def test_destroy_parent_and_child_issues
|
||||
parent = Issue.generate!(:project_id => 1, :tracker_id => 1)
|
||||
child = Issue.generate!(:project_id => 1, :tracker_id => 1, :parent_issue_id => parent.id)
|
||||
assert child.is_descendant_of?(parent.reload)
|
||||
|
||||
@request.session[:user_id] = 2
|
||||
assert_difference 'Issue.count', -2 do
|
||||
post :destroy, :ids => [parent.id, child.id], :todo => 'destroy'
|
||||
end
|
||||
assert_response 302
|
||||
end
|
||||
|
||||
def test_default_search_scope
|
||||
get :index
|
||||
assert_tag :div, :attributes => {:id => 'quick-search'},
|
||||
|
|
Loading…
Reference in New Issue