trabajo-afectivo/spec/support/active_job.rb

61 lines
1.5 KiB
Ruby

# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
module ZammadActiveJobHelper
delegate :enqueued_jobs, :performed_jobs, to: :queue_adapter
def queue_adapter
::ActiveJob::Base.queue_adapter
end
def clear_jobs
enqueued_jobs.clear
performed_jobs.clear
ActiveJobLock.destroy_all
end
end
module ZammadActiveJobSystemHelper
include ActiveJob::TestHelper
alias original_perform_enqueued_jobs perform_enqueued_jobs
def perform_enqueued_jobs(**kwargs, &block)
ActiveJobLock.destroy_all
original_perform_enqueued_jobs(**kwargs, &block)
end
end
RSpec.configure do |config|
activate_for = {
type: :job, # actual Job examples
performs_jobs: true, # examples performing Jobs
}
config.include ZammadActiveJobSystemHelper, performs_jobs: true, type: :system
activate_for.each do |key, value|
config.include ZammadActiveJobHelper, key => value
config.include RSpec::Rails::JobExampleGroup, key => value
config.around(:each, key => value) do |example|
default_queue_adapter = ::ActiveJob::Base.queue_adapter
::ActiveJob::Base.queue_adapter = :test
clear_jobs
example.run
ensure
::ActiveJob::Base.queue_adapter = default_queue_adapter
end
end
# Workaround needed for behavior change introduced in Rails >= 5.2
# see: https://github.com/rails/rails/issues/37270
config.before do
(ActiveJob::Base.descendants << ActiveJob::Base).each(&:disable_test_adapter)
end
end