45 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
RSpec.configure do |config|
 | 
						|
  def gitlab_sidekiq_inline(&block)
 | 
						|
    # We need to cleanup the queues before running jobs in specs because the
 | 
						|
    # middleware might have written to redis
 | 
						|
    redis_queues_cleanup!
 | 
						|
    Sidekiq::Testing.inline!(&block)
 | 
						|
  ensure
 | 
						|
    redis_queues_cleanup!
 | 
						|
  end
 | 
						|
 | 
						|
  # As we'll review the examples with this tag, we should either:
 | 
						|
  # - fix the example to not require Sidekiq inline mode (and remove this tag)
 | 
						|
  # - explicitly keep the inline mode and change the tag for `:sidekiq_inline` instead
 | 
						|
  config.around(:example, :sidekiq_might_not_need_inline) do |example|
 | 
						|
    gitlab_sidekiq_inline { example.run }
 | 
						|
  end
 | 
						|
 | 
						|
  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
 |