diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb index 9a41ff518..cab2f8af4 100644 --- a/app/jobs/application_job.rb +++ b/app/jobs/application_job.rb @@ -11,6 +11,9 @@ class ApplicationJob < ActiveJob::Base # until we resolve this dependency. around_enqueue do |job, block| block.call.tap do |delayed_job| + # skip test adapter + break if delayed_job.is_a?(Array) + delayed_job.update!(attempts: job.executions) end end diff --git a/spec/support/active_job.rb b/spec/support/active_job.rb new file mode 100644 index 000000000..af2647cb8 --- /dev/null +++ b/spec/support/active_job.rb @@ -0,0 +1,38 @@ +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 + end +end + +RSpec.configure do |config| + + activate_for = { + type: :job, # actual Job examples + performs_jobs: true, # examples performing Jobs + } + + 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 + + ::ActiveJob::Base.queue_adapter = default_queue_adapter + end + end +end