Sha256: aca0bc3b1c7d459dd2c63980aa6edee551e653a92f6a05cbd0f638a19ba18447

Contents?: true

Size: 682 Bytes

Versions: 1

Compression:

Stored size: 682 Bytes

Contents

require 'sidekiq/api'

ExpectedDataNotFoundError = Class.new(StandardError)

def wait_for(&block)
  20.tries on: ExpectedDataNotFoundError, delay: 0.2 do
    block.call or raise ExpectedDataNotFoundError
  end
end

def worker_with_jid(jid)
  Sidekiq::Workers.new.detect do |_, _, work|
    work['payload']['jid'] == jid
  end
end

def wait_for_job_to_run(job_class, *args, &block)
  job_class.perform_async(*args).tap do |jid|
    wait_for { worker_with_jid(jid) }
    block.call if block_given?
  end
end

def wait_for_job_to_run_and_finish(job_class, *args, &block)
  wait_for_job_to_run(job_class, *args, &block).tap do |jid|
    wait_for { worker_with_jid(jid).nil? }
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
services-0.2.10 spec/support/helpers.rb