summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2013-05-04 15:18:16 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2013-05-04 15:18:16 +0000
commitd69de691a79b9013e993090b324366df5a48efd2 (patch)
treed39233afd85ede488fa4fe1a19d1f7601e93bfc5
parent70bdb86c534f2acb074f48ddac3070eaf9a9e3d1 (diff)
downloadredmine-d69de691a79b9013e993090b324366df5a48efd2.tar.gz
redmine-d69de691a79b9013e993090b324366df5a48efd2.zip
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
-rw-r--r--app/controllers/issues_controller.rb10
-rw-r--r--test/functional/issues_controller_test.rb7
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