From d69de691a79b9013e993090b324366df5a48efd2 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 4 May 2013 15:18:16 +0000 Subject: [PATCH] Fixed that bulk copy raises an error on validation failure (#13943). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11788 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/issues_controller.rb | 10 ++++++---- test/functional/issues_controller_test.rb | 7 +++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 5336d8c24..327530009 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -260,13 +260,15 @@ class IssuesController < ApplicationController @issues.reject! {|issue| @issues.detect {|other| issue.is_descendant_of?(other)}} end - @issues.each do |issue| - issue.reload + @issues.each do |orig_issue| + orig_issue.reload if @copy - issue = issue.copy({}, + issue = orig_issue.copy({}, :attachments => params[:copy_attachments].present?, :subtasks => params[:copy_subtasks].present? ) + else + issue = orig_issue end journal = issue.init_journal(User.current, params[:notes]) issue.safe_attributes = attributes @@ -274,7 +276,7 @@ class IssuesController < ApplicationController if issue.save saved_issues << issue else - unsaved_issues << issue + unsaved_issues << orig_issue end end diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 62c765125..43908401b 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -3821,6 +3821,13 @@ class IssuesControllerTest < ActionController::TestCase assert_redirected_to :controller => 'issues', :action => 'show', :id => issue end + def test_bulk_copy_with_all_failures_should_display_errors + @request.session[:user_id] = 2 + post :bulk_update, :ids => [1, 2], :copy => '1', :issue => {:start_date => 'foo'} + + assert_response :success + end + def test_destroy_issue_with_no_time_entries assert_nil TimeEntry.find_by_issue_id(2) @request.session[:user_id] = 2