class RSpec::ActiveJob::Matchers::EnqueueA
Attributes
after_count[R]
argument_list_matcher[R]
before_count[R]
job_class[R]
number_of_times[R]
run_time[R]
Public Class Methods
new(job_class = nil)
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 7 def initialize(job_class = nil) @job_class = job_class end
Public Instance Methods
description()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 72 def description return "enqueue a job" unless job_class return "enqueue a #{job_class.name}" unless argument_list_matcher "enqueue a #{job_class.name} with #{argument_list_matcher.expected_args}" end
failure_message()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 45 def failure_message enqueued_nothing_message || enqueued_wrong_class_message || enqueued_at_wrong_time_message || enqueued_wrong_number_of_times_message || wrong_arguments_message end
failure_message_when_negated()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 53 def failure_message_when_negated return "expected to not enqueue a job" unless job_class message = "expected to not enqueue a #{job_class}" if @argument_list_matcher message += " with #{argument_list_matcher.expected_args}" end message += ", but enqueued a #{enqueued_jobs.last[:job]}" return message unless enqueued_correct_class? message + " with #{new_jobs_with_correct_class.first[:args]}" end
matches?(actual)
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 11 def matches?(actual) raise "must use a block with enqueue_a" if !actual.is_a?(Proc) && @job_class if actual.is_a?(Proc) @before_jobs = enqueued_jobs.dup actual.call all_checks_pass? else @job_class = actual @before_jobs = [] all_checks_pass? end end
once()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 35 def once @number_of_times = 1 self end
supports_block_expectations?()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 68 def supports_block_expectations? true end
times(n)
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 40 def times(n) @number_of_times = n self end
to_run_at(time)
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 30 def to_run_at(time) @run_time = time.to_f self end
with(*args)
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 25 def with(*args) @argument_list_matcher = RSpec::Mocks::ArgumentListMatcher.new(*args) self end
Private Instance Methods
all_checks_pass?()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 83 def all_checks_pass? enqueued_something? && enqueued_correct_class? && with_correct_args? && at_correct_time? && enqueued_correct_number_of_times? end
at_correct_time?()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 156 def at_correct_time? return true unless run_time !new_jobs_with_correct_class.find { |job| job[:at] == run_time }.nil? end
enqueued_at_wrong_time_message()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 116 def enqueued_at_wrong_time_message return if at_correct_time? "expected to run job at #{Time.at(run_time).utc}, but enqueued to " \ "run at #{format_enqueued_times}" end
enqueued_correct_class?()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 95 def enqueued_correct_class? return true unless job_class new_jobs_with_correct_class.any? end
enqueued_correct_number_of_times?()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 166 def enqueued_correct_number_of_times? return true unless number_of_times new_jobs_with_correct_class.count == number_of_times end
enqueued_jobs()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 152 def enqueued_jobs ::ActiveJob::Base.queue_adapter.enqueued_jobs end
enqueued_nothing_message()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 105 def enqueued_nothing_message return if enqueued_something? "expected to enqueue a #{job_class || 'job'}, enqueued nothing" end
enqueued_something?()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 91 def enqueued_something? new_jobs.any? end
enqueued_wrong_class_message()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 110 def enqueued_wrong_class_message return if enqueued_correct_class? "expected to enqueue a #{job_class}, enqueued a " \ "#{enqueued_jobs.last[:job]}" end
enqueued_wrong_number_of_times_message()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 128 def enqueued_wrong_number_of_times_message return if enqueued_correct_number_of_times? "expected to enqueue a #{job_class} " \ "#{times_count(number_of_times)}, but enqueued " \ "#{times_count(new_jobs.count)}" end
format_enqueued_times()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 162 def format_enqueued_times new_jobs_with_correct_class.map { |job| Time.at(job[:at]).utc.to_s }.join(', ') end
new_jobs()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 139 def new_jobs enqueued_jobs - @before_jobs end
new_jobs_with_correct_class()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 143 def new_jobs_with_correct_class new_jobs.select { |job| job[:job] == job_class } end
new_jobs_with_correct_class_and_args()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 147 def new_jobs_with_correct_class_and_args new_jobs_with_correct_class. select { |job| argument_list_matcher.args_match?(*job[:args]) } end
times_count(n)
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 135 def times_count(n) n == 1 ? 'once' : "#{n} times" end
with_correct_args?()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 100 def with_correct_args? return true unless argument_list_matcher new_jobs_with_correct_class_and_args.any? end
wrong_arguments_message()
click to toggle source
# File lib/rspec/active_job/enqueue_a.rb, line 122 def wrong_arguments_message "expected to enqueue a #{job_class} with " \ "#{argument_list_matcher.expected_args}, but enqueued with " \ "#{new_jobs_with_correct_class.first[:args]}" end