]> source.dussan.org Git - redmine.git/commitdiff
Cannot clear all watchers when copying an issue (#26880).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 7 Jan 2018 22:18:17 +0000 (22:18 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 7 Jan 2018 22:18:17 +0000 (22:18 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@17153 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/views/issues/_watchers_form.html.erb
test/functional/issues_controller_test.rb

index 6d349f4a377ad5a483047b1369ab3eaa07a65188..b55e60284ca821bf89147b3e00a84a7865dfb740 100644 (file)
@@ -1,4 +1,5 @@
 <% if @issue.safe_attribute? 'watcher_user_ids' -%>
+  <%= hidden_field_tag 'issue[watcher_user_ids][]', '' %>
   <p id="watchers_form"><label><%= l(:label_issue_watchers) %></label>
   <span id="watchers_inputs">
     <%= watchers_checkboxes(@issue, users_for_new_issue_watchers(@issue)) %>
index 34d3532635dba62b9c15ba636f6e7b583bb9e078..3ab922a22da761d3b6557df60686140a8fe93de7 100644 (file)
@@ -3871,6 +3871,7 @@ class IssuesControllerTest < Redmine::ControllerTest
 
     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=hidden][name=?][value=?]', 'issue[watcher_user_ids][]', '', 1
   end
 
   def test_new_as_copy_with_invalid_issue_should_respond_with_404
@@ -4207,6 +4208,46 @@ class IssuesControllerTest < Redmine::ControllerTest
     assert_equal 1, issue.project_id
   end
 
+  def test_create_as_copy_with_watcher_user_ids_should_copy_watchers
+    @request.session[:user_id] = 2
+    copied = Issue.generate!
+    copied.add_watcher User.find(2)
+    copied.add_watcher User.find(3)
+
+    assert_difference 'Issue.count' do
+      post :create, :params => {
+          :project_id => 1,
+          :copy_from => copied.id,
+          :issue => {
+            :subject => 'Copy cleared watchers',
+            :watcher_user_ids => ['', '3']
+          }
+        }
+    end
+    issue = Issue.order('id DESC').first
+    assert_equal [3], issue.watcher_user_ids
+  end
+
+  def test_create_as_copy_without_watcher_user_ids_should_not_copy_watchers
+    @request.session[:user_id] = 2
+    copied = Issue.generate!
+    copied.add_watcher User.find(2)
+    copied.add_watcher User.find(3)
+
+    assert_difference 'Issue.count' do
+      post :create, :params => {
+          :project_id => 1,
+          :copy_from => copied.id,
+          :issue => {
+            :subject => 'Copy cleared watchers',
+            :watcher_user_ids => ['']
+          }
+        }
+    end
+    issue = Issue.order('id DESC').first
+    assert_equal [], issue.watcher_user_ids
+  end
+
   def test_get_edit
     @request.session[:user_id] = 2
     get :edit, :params => {