diff options
author | Go MAEDA <maeda@farend.jp> | 2018-06-07 00:33:29 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2018-06-07 00:33:29 +0000 |
commit | 85db9769bc5f167466ddcaea2ff5c2583c86d681 (patch) | |
tree | 42249a3af5e95b73cedce052260ecbf91ab9c510 | |
parent | be7b5be79e00b774b66d52ccc5f24794ed5138f8 (diff) | |
download | redmine-85db9769bc5f167466ddcaea2ff5c2583c86d681.tar.gz redmine-85db9769bc5f167466ddcaea2ff5c2583c86d681.zip |
Clear target version when copying an issue if status is locked or closed (#27863).
Patch by Marius BALTEANU.
git-svn-id: http://svn.redmine.org/redmine/trunk@17368 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/issue.rb | 1 | ||||
-rw-r--r-- | test/unit/issue_test.rb | 20 |
2 files changed, 21 insertions, 0 deletions
diff --git a/app/models/issue.rb b/app/models/issue.rb index 9b55c2a74..0cabeb88f 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -1638,6 +1638,7 @@ class Issue < ActiveRecord::Base copy.author = author copy.project = project copy.parent_issue_id = copied_issue_ids[child.parent_id] + copy.fixed_version_id = nil unless child.fixed_version.present? && child.fixed_version.status == 'open' unless copy.save logger.error "Could not copy subtask ##{child.id} while copying ##{@copied_from.id} to ##{id} due to validation errors: #{copy.errors.full_messages.join(', ')}" if logger next diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index 48a12c6e4..0d9f4c250 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -1393,6 +1393,26 @@ class IssueTest < ActiveSupport::TestCase assert !issue.watched_by?(user2) end + def test_copy_should_clear_subtasks_target_version_if_locked_or_closed + version = Version.new(:project => Project.find(1), :name => '2.1',) + version.save! + + parent = Issue.generate! + child1 = Issue.generate!(:parent_issue_id => parent.id, :subject => 'Child 1', :fixed_version_id => 3) + child2 = Issue.generate!(:parent_issue_id => parent.id, :subject => 'Child 2', :fixed_version_id => version.id) + + version.status = 'locked' + version.save! + + copy = parent.reload.copy + + assert_difference 'Issue.count', 3 do + assert copy.save + end + + assert_equal [3, nil], copy.children.map(&:fixed_version_id) + end + def test_should_not_call_after_project_change_on_creation issue = Issue.new(:project_id => 1, :tracker_id => 1, :status_id => 1, :subject => 'Test', :author_id => 1) |