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 }
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'},