summaryrefslogtreecommitdiff
path: root/spec/support/sidekiq.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/support/sidekiq.rb')
-rw-r--r--spec/support/sidekiq.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/spec/support/sidekiq.rb b/spec/support/sidekiq.rb
index 374997af1ec..dc475b92c0b 100644
--- a/spec/support/sidekiq.rb
+++ b/spec/support/sidekiq.rb
@@ -20,4 +20,25 @@ RSpec.configure do |config|
config.around(:example, :sidekiq_inline) do |example|
gitlab_sidekiq_inline { example.run }
end
+
+ # Some specs need to run mailers through Sidekiq explicitly, rather
+ # than the ActiveJob test adapter. There is a Rails bug that means we
+ # have to do some extra steps to make this happen:
+ # https://github.com/rails/rails/issues/37270
+ #
+ # In particular, we can't use an `around` hook because then the 'before' part
+ # of that will run before the `before_setup` hook in ActiveJob::TestHelper,
+ # which doesn't do what we want.
+ #
+ config.before(:example, :sidekiq_mailers) do
+ queue_adapter_changed_jobs.each { |k| k.queue_adapter = :sidekiq }
+ queue_adapter_changed_jobs.each(&:disable_test_adapter)
+ end
+
+ config.after(:example, :sidekiq_mailers) do
+ queue_adapter_changed_jobs.each do |klass|
+ klass.queue_adapter = :test
+ klass.enable_test_adapter(ActiveJob::QueueAdapters::TestAdapter.new)
+ end
+ end
end