lib/active_job/test_helper.rb in activejob-7.1.5 vs lib/active_job/test_helper.rb in activejob-7.2.0.beta1
- old
+ new
@@ -37,14 +37,17 @@
ActiveSupport.on_load(:active_job) do
ActiveJob::Base.include(TestQueueAdapter)
end
def before_setup # :nodoc:
- test_adapter = queue_adapter_for_test
-
+ queue_adapter_specific_to_this_test_class = queue_adapter_for_test
queue_adapter_changed_jobs.each do |klass|
- klass.enable_test_adapter(test_adapter)
+ if queue_adapter_specific_to_this_test_class
+ klass.enable_test_adapter(queue_adapter_specific_to_this_test_class)
+ elsif klass._queue_adapter.nil?
+ klass.enable_test_adapter(ActiveJob::QueueAdapters::TestAdapter.new)
+ end
end
clear_enqueued_jobs
clear_performed_jobs
super
@@ -59,11 +62,10 @@
# Returns a queue adapter instance to use with all Active Job test helpers.
# By default, returns an instance of ActiveJob::QueueAdapters::TestAdapter.
# Override this method to specify a different adapter. The adapter must
# implement the same interface as ActiveJob::QueueAdapters::TestAdapter.
def queue_adapter_for_test
- ActiveJob::QueueAdapters::TestAdapter.new
end
# Asserts that the number of enqueued jobs matches the given number.
#
# def test_jobs
@@ -116,10 +118,12 @@
# LoggingJob.perform_later
# HelloJob.perform_later('elfassy')
# end
# end
def assert_enqueued_jobs(number, only: nil, except: nil, queue: nil, &block)
+ require_active_job_test_adapter!("assert_enqueued_jobs")
+
if block_given?
original_jobs = enqueued_jobs_with(only: only, except: except, queue: queue)
_assert_nothing_raised_or_warn("assert_enqueued_jobs", &block)
@@ -178,10 +182,12 @@
#
# Note: This assertion is simply a shortcut for:
#
# assert_enqueued_jobs 0, &block
def assert_no_enqueued_jobs(only: nil, except: nil, queue: nil, &block)
+ require_active_job_test_adapter!("assert_no_enqueued_jobs")
+
assert_enqueued_jobs 0, only: only, except: except, queue: queue, &block
end
# Asserts that the number of performed jobs matches the given number.
# If no block is passed, <tt>perform_enqueued_jobs</tt>
@@ -268,10 +274,12 @@
# HelloJob.set(queue: :some_queue).perform_later("jeremy")
# HelloJob.set(queue: :other_queue).perform_later("bogdan")
# end
# end
def assert_performed_jobs(number, only: nil, except: nil, queue: nil, &block)
+ require_active_job_test_adapter!("assert_performed_jobs")
+
if block_given?
original_count = performed_jobs.size
perform_enqueued_jobs(only: only, except: except, queue: queue, &block)
@@ -336,10 +344,12 @@
#
# Note: This assertion is simply a shortcut for:
#
# assert_performed_jobs 0, &block
def assert_no_performed_jobs(only: nil, except: nil, queue: nil, &block)
+ require_active_job_test_adapter!("assert_no_performed_jobs")
+
assert_performed_jobs 0, only: only, except: except, queue: queue, &block
end
# Asserts that the job has been enqueued with the given arguments.
#
@@ -392,10 +402,12 @@
# assert_enqueued_with(job: MyJob, at: Date.tomorrow.noon) do
# MyJob.set(wait_until: Date.tomorrow.noon).perform_later
# end
# end
def assert_enqueued_with(job: nil, args: nil, at: nil, queue: nil, priority: nil, &block)
+ require_active_job_test_adapter!("assert_enqueued_with")
+
expected = { job: job, args: args, at: at, queue: queue, priority: priority }.compact
expected_args = prepare_args_for_assertion(expected)
potential_matches = []
if block_given?
@@ -494,10 +506,12 @@
# assert_performed_with(job: MyJob, at: Date.tomorrow.noon) do
# MyJob.set(wait_until: Date.tomorrow.noon).perform_later
# end
# end
def assert_performed_with(job: nil, args: nil, at: nil, queue: nil, priority: nil, &block)
+ require_active_job_test_adapter!("assert_performed_with")
+
expected = { job: job, args: args, at: at, queue: queue, priority: priority }.compact
expected_args = prepare_args_for_assertion(expected)
potential_matches = []
if block_given?
@@ -602,11 +616,14 @@
# that have been enqueued without a time.
#
# If queue_adapter_for_test is overridden to return a different adapter,
# +perform_enqueued_jobs+ will merely execute the block.
def perform_enqueued_jobs(only: nil, except: nil, queue: nil, at: nil, &block)
- return flush_enqueued_jobs(only: only, except: except, queue: queue, at: at) unless block_given?
+ unless block_given?
+ require_active_job_test_adapter!("perform_enqueued_jobs (without a block)")
+ return flush_enqueued_jobs(only: only, except: except, queue: queue, at: at)
+ end
return _assert_nothing_raised_or_warn("perform_enqueued_jobs", &block) unless using_test_adapter?
validate_option(only: only, except: except)
@@ -644,9 +661,15 @@
def queue_adapter
ActiveJob::Base.queue_adapter
end
private
+ def require_active_job_test_adapter!(method)
+ unless using_test_adapter?
+ raise ArgumentError.new("#{method} requires the Active Job test adapter, you're using #{queue_adapter.class.name}.")
+ end
+ end
+
def using_test_adapter?
queue_adapter.is_a?(ActiveJob::QueueAdapters::TestAdapter)
end
def clear_enqueued_jobs