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:
parent
e70ec9e91c
commit
c2854af747
2 changed files with 31 additions and 14 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue