class RSpec::Que::Matchers::QueueUp

Attributes

after_count[R]
argument_list_matcher[R]
before_count[R]
job_class[R]

Public Class Methods

new(job_class = nil) click to toggle source
# File lib/rspec/que/queue_up.rb, line 21
def initialize(job_class = nil)
  @matchers = [QueuedSomething.new]
  @matchers << QueuedClass.new(job_class) if job_class
  @count_matcher = QueueCount.new(self, QueueCount::EXACTLY, 1)
  @job_class = job_class
  @stages = []
end

Public Instance Methods

at(the_time) click to toggle source
# File lib/rspec/que/queue_up.rb, line 49
def at(the_time)
  @matchers << QueuedAt.new(the_time)
  self
end
description() click to toggle source
# File lib/rspec/que/queue_up.rb, line 88
def description
  "queues up a #{job_description}"
end
failure_message() click to toggle source
# File lib/rspec/que/queue_up.rb, line 66
def failure_message
  # last stage to have any candidate jobs
  failed_stage = @stages.reject do |s|
    s[:candidates].empty?
  end.last || @stages.first
  failed_matcher = failed_stage[:matcher]
  failed_candidates = failed_stage[:candidates]
  found_instead = failed_matcher.failed_msg(failed_candidates)

  "expected to enqueue #{job_description}, but found #{found_instead}"
end
failure_message_when_negated() click to toggle source
# File lib/rspec/que/queue_up.rb, line 78
def failure_message_when_negated
  format "expected not to enqueue #{job_description}, got %d enqueued: %s",
         @matched_jobs.length,
         @matched_jobs.map { |j| format_job(j) }.join(", ")
end
matches?(block) click to toggle source
# File lib/rspec/que/queue_up.rb, line 29
def matches?(block)
  before_jobs = enqueued_jobs.dup
  block.call

  @matched_jobs = enqueued_jobs - before_jobs
  @matchers.each do |matcher|
    @stages << { matcher: matcher, candidates: @matched_jobs.dup }
    @matched_jobs.delete_if { |job| !matcher.matches?(job) }
  end

  @stages << { matcher: @count_matcher, candidates: @matched_jobs.dup }

  @count_matcher.matches?(@matched_jobs.count)
end
of_priority(priority) click to toggle source
# File lib/rspec/que/queue_up.rb, line 54
def of_priority(priority)
  @matchers << QueuedPriority.new(priority)
  self
end
supports_block_expectations?() click to toggle source
# File lib/rspec/que/queue_up.rb, line 84
def supports_block_expectations?
  true
end
with(*args) click to toggle source
# File lib/rspec/que/queue_up.rb, line 44
def with(*args)
  @matchers << QueuedArgs.new(args)
  self
end

Private Instance Methods

enqueued_jobs() click to toggle source
# File lib/rspec/que/queue_up.rb, line 96
def enqueued_jobs
  ::Que.execute "SELECT * FROM que_jobs"
end
format_job(job) click to toggle source
# File lib/rspec/que/queue_up.rb, line 108
def format_job(job)
  "#{job[:job_class]}[" + job[:args].join(", ") + "]"
end
job_description() click to toggle source
# File lib/rspec/que/queue_up.rb, line 100
def job_description
  if @count_matcher.default?
    @matchers.map(&:desc).join(" ")
  else
    [*@matchers, @count_matcher].map(&:desc).join(" ")
  end
end