Skip to content

Commit a459caa

Browse files
toydestroyerrosa
authored andcommitted
Ensure scheduled_at is set
1 parent c445201 commit a459caa

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

app/models/solid_queue/job.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class EnqueueError < StandardError; end
1010

1111
class << self
1212
def enqueue_all(active_jobs)
13+
active_jobs.each { |job| job.scheduled_at ||= Time.current }
1314
active_jobs_by_job_id = active_jobs.index_by(&:job_id)
1415

1516
transaction do

test/models/solid_queue/job_test.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,22 @@ class DiscardableNonOverlappingGroupedJob2 < NonOverlappingJob
356356
assert_equal "enqueued inside a rolled back transaction", job.arguments.dig("arguments", 0)
357357
end
358358

359+
test "enqueue_all assigns scheduled_at if missing" do
360+
freeze_time do
361+
active_jobs = [
362+
AddToBufferJob.new(1),
363+
AddToBufferJob.new(2).set(wait: 5.minutes)
364+
]
365+
366+
ActiveJob.perform_all_later(active_jobs)
367+
368+
jobs = SolidQueue::Job.where(active_job_id: active_jobs.map(&:job_id)).order(:id)
369+
370+
assert_equal Time.current, jobs[0].scheduled_at
371+
assert_equal 5.minutes.from_now, jobs[1].scheduled_at
372+
end
373+
end
374+
359375
private
360376
def assert_ready(&block)
361377
assert_job_counts(ready: 1, &block)

0 commit comments

Comments
 (0)