Project

General

Profile

Feature #8757 » 0001-Add-controller_issues_bulk_edit_after_save-hook.patch

Tobias Böhm's patch + tests - Go MAEDA, 2026-09-18 05:54

View differences:

app/controllers/issues_controller.rb
415 415
      call_hook(:controller_issues_bulk_edit_before_save, {:params => params, :issue => issue})
416 416
      if issue.save
417 417
        saved_issues << issue
418
        call_hook(:controller_issues_bulk_edit_after_save, { :params => params, :issue => issue, :journal => journal })
418 419
      else
419 420
        unsaved_issues << orig_issue
420 421
      end
test/functional/issues_controller_test.rb
7807 7807
    assert_equal 1, journal.details.size
7808 7808
  end
7809 7809

  
7810
  class BulkEditHookListener < Redmine::Hook::ViewListener
7811
    cattr_accessor :after_contexts
7812

  
7813
    def controller_issues_bulk_edit_after_save(context)
7814
      (self.class.after_contexts ||= []) << context
7815
    end
7816
  end
7817

  
7818
  Redmine::Hook.clear_listeners
7819

  
7820
  def test_bulk_update_should_call_after_save_hook
7821
    Redmine::Hook.clear_listeners
7822
    Redmine::Hook.add_listener(BulkEditHookListener)
7823
    BulkEditHookListener.after_contexts = []
7824
    @request.session[:user_id] = 2
7825
    post(
7826
      :bulk_update,
7827
      :params => {
7828
        :ids => [1, 2],
7829
        :notes => 'Bulk editing',
7830
        :issue => {
7831
          :priority_id => 7
7832
        }
7833
      }
7834
    )
7835

  
7836
    assert_equal [1, 2], BulkEditHookListener.after_contexts.map {|c| c[:issue].id}.sort
7837
    assert_equal ['Bulk editing'], BulkEditHookListener.after_contexts.map {|c| c[:journal].notes}.uniq
7838
  ensure
7839
    Redmine::Hook.clear_listeners
7840
  end
7841

  
7842
  def test_bulk_update_should_not_call_after_save_hook_when_save_fails
7843
    Redmine::Hook.clear_listeners
7844
    Redmine::Hook.add_listener(BulkEditHookListener)
7845
    BulkEditHookListener.after_contexts = []
7846
    @request.session[:user_id] = 2
7847
    post(
7848
      :bulk_update,
7849
      :params => {
7850
        :ids => [1, 2],
7851
        :issue => {
7852
          :start_date => 'foo'
7853
        }
7854
      }
7855
    )
7856

  
7857
    assert_equal [], BulkEditHookListener.after_contexts
7858
  ensure
7859
    Redmine::Hook.clear_listeners
7860
  end
7861

  
7810 7862
  def test_bulk_update_with_group_assignee
7811 7863
    group = Group.find(11)
7812 7864
    project = Project.find(1)
(3-3/3)