1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Added missing specs for not modifying queues when using AJ test helpers

This commit is contained in:
Wojciech Wnętrzak 2015-10-07 19:55:57 +02:00
parent e70ec9e91c
commit c2854af747
2 changed files with 31 additions and 14 deletions

View file

@ -231,19 +231,17 @@ module ActiveJob
# MyJob.set(wait_until: Date.tomorrow.noon).perform_later
# end
# end
def assert_enqueued_with(args = {}, &_block)
original_enqueued_jobs = enqueued_jobs.dup
clear_enqueued_jobs
def assert_enqueued_with(args = {})
original_enqueued_jobs_count = enqueued_jobs.count
args.assert_valid_keys(:job, :args, :at, :queue)
serialized_args = serialize_args_for_assertion(args)
yield
matching_job = enqueued_jobs.find do |job|
in_block_jobs = enqueued_jobs.drop(original_enqueued_jobs_count)
matching_job = in_block_jobs.find do |job|
serialized_args.all? { |key, value| value == job[key] }
end
assert matching_job, "No enqueued job found with #{args}"
instantiate_job(matching_job)
ensure
queue_adapter.enqueued_jobs = original_enqueued_jobs + enqueued_jobs
end
# Asserts that the job passed in the block has been performed with the given arguments.
@ -257,19 +255,17 @@ module ActiveJob
# MyJob.set(wait_until: Date.tomorrow.noon).perform_later
# end
# end
def assert_performed_with(args = {}, &_block)
original_performed_jobs = performed_jobs.dup
clear_performed_jobs
def assert_performed_with(args = {})
original_performed_jobs_count = performed_jobs.count
args.assert_valid_keys(:job, :args, :at, :queue)
serialized_args = serialize_args_for_assertion(args)
perform_enqueued_jobs { yield }
matching_job = performed_jobs.find do |job|
in_block_jobs = performed_jobs.drop(original_performed_jobs_count)
matching_job = in_block_jobs.find do |job|
serialized_args.all? { |key, value| value == job[key] }
end
assert matching_job, "No performed job found with #{args}"
instantiate_job(matching_job)
ensure
queue_adapter.performed_jobs = original_performed_jobs + performed_jobs
end
def perform_enqueued_jobs(only: nil)
@ -308,9 +304,9 @@ module ActiveJob
def enqueued_jobs_size(only: nil) # :nodoc:
if only
enqueued_jobs.select { |job| Array(only).include?(job.fetch(:job)) }.size
enqueued_jobs.count { |job| Array(only).include?(job.fetch(:job)) }
else
enqueued_jobs.size
enqueued_jobs.count
end
end

View file

@ -242,6 +242,15 @@ class EnqueuedJobsTest < ActiveJob::TestCase
assert_equal "No enqueued job found with {:job=>HelloJob, :args=>[#{wilma.inspect}]}", error.message
end
def test_assert_enqueued_job_does_not_change_jobs_count
HelloJob.perform_later
assert_enqueued_with(job: HelloJob) do
HelloJob.perform_later
end
assert_equal 2, ActiveJob::Base.queue_adapter.enqueued_jobs.count
end
end
class PerformedJobsTest < ActiveJob::TestCase
@ -487,4 +496,16 @@ class PerformedJobsTest < ActiveJob::TestCase
assert_equal "No performed job found with {:job=>HelloJob, :args=>[#{wilma.inspect}]}", error.message
end
def test_assert_performed_job_does_not_change_jobs_count
assert_performed_with(job: HelloJob) do
HelloJob.perform_later
end
assert_performed_with(job: HelloJob) do
HelloJob.perform_later
end
assert_equal 2, ActiveJob::Base.queue_adapter.performed_jobs.count
end
end