module ActiveJob::TestHelper

def jobs_with(jobs, only: nil, except: nil, queue: nil, at: nil)

def jobs_with(jobs, only: nil, except: nil, queue: nil, at: nil)
  validate_option(only: only, except: except)
  jobs.dup.select do |job|
    job_class = job.fetch(:job)
    if only
      next false unless filter_as_proc(only).call(job)
    elsif except
      next false if filter_as_proc(except).call(job)
    end
    if queue
      next false unless queue.to_s == job.fetch(:queue, job_class.queue_name)
    end
    if at && job[:at]
      next false if job[:at] > at.to_f
    end
    yield job if block_given?
    true
  end
end