module ResqueUnit::SchedulerAssertions

Public Instance Methods

assert_not_queued_at(expected_timestamp, klass, args = nil, message = nil) click to toggle source

opposite of assert_queued_at

# File lib/resque_unit/scheduler_assertions.rb, line 28
def assert_not_queued_at(expected_timestamp, klass, args = nil, message = nil)
  queue = Resque.queue_for(klass)
  assert !in_timestamped_queue?(queue, expected_timestamp, klass, args),
    (message || "#{klass} should not have been queued in #{queue} before #{expected_timestamp}.")
end
assert_not_queued_in(expected_time_difference, klass, args = nil, message = nil) click to toggle source

opposite of assert_queued_in

# File lib/resque_unit/scheduler_assertions.rb, line 35
def assert_not_queued_in(expected_time_difference, klass, args = nil, message = nil)
  assert_not_queued_at(Time.now + expected_time_difference, klass, args, message)
end
assert_queued_at(expected_timestamp, klass, args = nil, message = nil) click to toggle source

Asserts that klass has been queued into its appropriate queue at least once, with a timestamp less than or equal to expected_timestamp. If the job wasn’t queued with a timestamp, the assertion fails.. If args is nil, it only asserts that the klass has been queued. Otherwise, it asserts that the klass has been queued with the correct arguments. Pass an empty array for args if you want to assert that klass has been queued without arguments.

# File lib/resque_unit/scheduler_assertions.rb, line 15
def assert_queued_at(expected_timestamp, klass, args = nil, message = nil)
  queue = Resque.queue_for(klass)
  assert in_timestamped_queue?(queue, expected_timestamp, klass, args),
    (message || "#{klass} should have been queued in #{queue} before #{expected_timestamp}: #{Resque.queue(queue).inspect}.")
end
assert_queued_in(expected_time_difference, klass, args = nil, message = nil) click to toggle source

Similar to assert_queued_at, except it takes an expected time difference (in seconds) instead of a timestamp.

# File lib/resque_unit/scheduler_assertions.rb, line 23
def assert_queued_in(expected_time_difference, klass, args = nil, message = nil)
  assert_queued_at(Time.now + expected_time_difference, klass, args, message)
end

Private Instance Methods

in_timestamped_queue?(queue_name, expected_timestamp, klass, args = nil) click to toggle source
# File lib/resque_unit/scheduler_assertions.rb, line 41
def in_timestamped_queue?(queue_name, expected_timestamp, klass, args = nil)
  # check if we have any matching jobs with a timestamp less than
  # expected_timestamp
  !matching_jobs(Resque.all(queue_name), klass, args).select {|e| e["timestamp"] && Time.parse(e["timestamp"]) <= expected_timestamp}.empty?
end