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

Merge pull request #38605 from dmitry/issue-38584

While using perform_enqueued_jobs enqueued jobs must be stored as well
This commit is contained in:
Rafael Mendonça França 2020-04-08 17:20:33 -04:00
commit d16396e1ce
No known key found for this signature in database
GPG key ID: FC23B6D0F1EEE948
3 changed files with 29 additions and 7 deletions

View file

@ -105,5 +105,9 @@
*Anthony Ross*
* While using `perform_enqueued_jobs` test helper enqueued jobs must be stored for the later check with `assert_enqueued_with`.
*Dmitry Polushkin*
Please check [6-0-stable](https://github.com/rails/rails/blob/6-0-stable/activejob/CHANGELOG.md) for previous changes.

View file

@ -26,17 +26,13 @@ module ActiveJob
end
def enqueue(job) #:nodoc:
return if filtered?(job)
job_data = job_to_hash(job)
perform_or_enqueue(perform_enqueued_jobs, job, job_data)
perform_or_enqueue(perform_enqueued_jobs && !filtered?(job), job, job_data)
end
def enqueue_at(job, timestamp) #:nodoc:
return if filtered?(job)
job_data = job_to_hash(job, at: timestamp)
perform_or_enqueue(perform_enqueued_at_jobs, job, job_data)
perform_or_enqueue(perform_enqueued_at_jobs && !filtered?(job), job, job_data)
end
private
@ -51,7 +47,7 @@ module ActiveJob
def perform_or_enqueue(perform, job, job_data)
if perform
performed_jobs << job_data
Base.execute job.serialize
Base.execute(job.serialize)
else
enqueued_jobs << job_data
end

View file

@ -633,6 +633,17 @@ class EnqueuedJobsTest < ActiveJob::TestCase
assert_enqueued_with(job: HelloJob, at: Date.tomorrow.noon)
end
def test_assert_enqueued_with_wait_until_with_performed
assert_enqueued_with(job: LoggingJob) do
perform_enqueued_jobs(only: HelloJob) do
HelloJob.set(wait_until: Date.tomorrow.noon).perform_later("david")
LoggingJob.set(wait_until: Date.tomorrow.noon).perform_later("enqueue")
end
end
assert_enqueued_jobs 1
assert_performed_jobs 1
end
def test_assert_enqueued_with_with_hash_arg
assert_enqueued_with(job: MultipleKwargsJob, args: [{ argument1: 1, argument2: { a: 1, b: 2 } }]) do
MultipleKwargsJob.perform_later(argument2: { b: 2, a: 1 }, argument1: 1)
@ -692,6 +703,17 @@ class EnqueuedJobsTest < ActiveJob::TestCase
assert_equal 2, queue_adapter.enqueued_jobs.count
end
def test_assert_enqueued_jobs_with_performed
assert_enqueued_with(job: LoggingJob) do
perform_enqueued_jobs(only: HelloJob) do
HelloJob.perform_later("david")
LoggingJob.perform_later("enqueue")
end
end
assert_enqueued_jobs 1
assert_performed_jobs 1
end
end
class PerformedJobsTest < ActiveJob::TestCase