From 028fd986d2ee296e730d833127771fb13a4477f4 Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Mon, 14 May 2018 21:12:57 +0000 Subject: [PATCH] do not propose locked watchers when copying an issue --- app/helpers/issues_helper.rb | 2 +- test/functional/issues_controller_test.rb | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 1c2fd1b..e9772d2 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -312,7 +312,7 @@ module IssuesHelper # Returns an array of users that are proposed as watchers # on the new issue form def users_for_new_issue_watchers(issue) - users = issue.watcher_users + users = issue.watcher_users.select{|u| u.status == User::STATUS_ACTIVE} if issue.project.users.count <= 20 users = (users + issue.project.users.sort).uniq end diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index fc5b035..470ea74 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -3916,6 +3916,29 @@ class IssuesControllerTest < Redmine::ControllerTest assert_select 'input[type=hidden][name=?][value=?]', 'issue[watcher_user_ids][]', '', 1 end + def test_new_as_copy_should_not_propose_locked_watchers + @request.session[:user_id] = 2 + + issue = Issue.find(1) + user = User.generate! + user2 = User.generate! + + Watcher.create!(:watchable => issue, :user => user) + Watcher.create!(:watchable => issue, :user => user2) + + user2.status = User::STATUS_LOCKED + user2.save! + get :new, :params => { + :project_id => 1, + :copy_from => 1 + } + + assert_select 'input[type=checkbox][name=?][checked=checked]', 'issue[watcher_user_ids][]', 1 + assert_select 'input[type=checkbox][name=?][checked=checked][value=?]', 'issue[watcher_user_ids][]', user.id.to_s + assert_select 'input[type=checkbox][name=?][checked=checked][value=?]', 'issue[watcher_user_ids][]', user2.id.to_s, 0 + assert_select 'input[type=hidden][name=?][value=?]', 'issue[watcher_user_ids][]', '', 1 + end + def test_new_as_copy_with_invalid_issue_should_respond_with_404 @request.session[:user_id] = 2 get :new, :params => { -- 2.1.4