Skip to content

Commit 74d20ce

Browse files
committed
Test updates
1 parent d5e9fc5 commit 74d20ce

File tree

1 file changed

+26
-39
lines changed

1 file changed

+26
-39
lines changed

test/integration/batch_lifecycle_test.rb

Lines changed: 26 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,14 @@ class BatchLifecycleTest < ActiveSupport::TestCase
77

88
def assert_finished_in_order(*finishables)
99
finishables.each_cons(2) do |finished1, finished2|
10-
assert_equal finished1.reload.finished_at < finished2.reload.finished_at, true
10+
assert_equal finished1.finished_at < finished2.finished_at, true
1111
end
1212
end
1313

14+
def job!(active_job)
15+
SolidQueue::Job.find_by!(active_job_id: active_job.job_id)
16+
end
17+
1418
setup do
1519
@_on_thread_error = SolidQueue.on_thread_error
1620
SolidQueue.on_thread_error = silent_on_thread_error_for([ FailingJobError ], @_on_thread_error)
@@ -128,17 +132,18 @@ def perform
128132
expected_values = [ "1: 1 jobs succeeded!", "1.1: 1 jobs succeeded!", "2: 1 jobs succeeded!", "3: 1 jobs succeeded!" ]
129133
assert_equal expected_values.sort, JobBuffer.values.sort
130134
assert_equal 4, SolidQueue::Batch.finished.count
131-
assert_finished_in_order(batch4, batch2, batch1)
132-
assert_finished_in_order(batch3, batch2, batch1)
135+
assert_finished_in_order(batch4.reload, batch2.reload, batch1.reload)
136+
assert_finished_in_order(batch3.reload, batch2, batch1)
133137
end
134138

135139
test "all jobs are run, including jobs enqueued inside of other jobs" do
136140
batch2 = nil
141+
job1 = job2 = job3 = nil
137142
batch1 = SolidQueue::Batch.enqueue do
138-
AddToBufferJob.perform_later "hey"
143+
job1 = AddToBufferJob.perform_later "hey"
139144
batch2 = SolidQueue::Batch.enqueue do
140-
AddToBufferJob.perform_later "ho"
141-
AddsMoreJobsJob.perform_later
145+
job2 = AddToBufferJob.perform_later "ho"
146+
job3 = AddsMoreJobsJob.perform_later
142147
end
143148
end
144149

@@ -149,25 +154,29 @@ def perform
149154

150155
assert_equal [ "added from inside 1", "added from inside 2", "added from inside 3", "hey", "ho" ], JobBuffer.values.sort
151156
assert_equal 3, SolidQueue::Batch.finished.count
152-
assert_finished_in_order(batch2, batch1)
157+
assert_finished_in_order(batch2.reload, batch1.reload)
158+
assert_finished_in_order(job!(job3), batch2)
159+
assert_finished_in_order(job!(job2), batch2)
160+
assert_finished_in_order(job!(job1), batch1)
153161
end
154162

155163
test "when self.enqueue_after_transaction_commit = true" do
156164
skip if Rails::VERSION::MAJOR == 7 && Rails::VERSION::MINOR == 1
157165

158166
ApplicationJob.enqueue_after_transaction_commit = true
159167
batch1 = batch2 = batch3 = nil
168+
job1 = job2 = job3 = nil
160169
JobResult.transaction do
161170
JobResult.create!(queue_name: "default", status: "")
162171

163172
batch1 = SolidQueue::Batch.enqueue do
164-
AddToBufferJob.perform_later "hey"
173+
job1 = AddToBufferJob.perform_later "hey"
165174
JobResult.transaction(requires_new: true) do
166175
JobResult.create!(queue_name: "default", status: "")
167176
batch2 = SolidQueue::Batch.enqueue do
168-
AddToBufferJob.perform_later "ho"
177+
job2 = AddToBufferJob.perform_later "ho"
169178
batch3 = SolidQueue::Batch.enqueue do
170-
AddToBufferJob.perform_later "let's go"
179+
job3 = AddToBufferJob.perform_later "let's go"
171180
end
172181
end
173182
end
@@ -179,10 +188,14 @@ def perform
179188

180189
wait_for_batches_to_finish_for(2.seconds)
181190

191+
assert_equal [ "hey", "ho", "let's go" ], JobBuffer.values.sort
182192
assert_equal 3, SolidQueue::Batch.finished.count
183193
assert_equal 3, SolidQueue::Job.finished.count
184194
assert_equal 3, SolidQueue::Job.count
185-
assert_finished_in_order(batch3, batch2, batch1)
195+
assert_finished_in_order(batch3.reload, batch2.reload, batch1.reload)
196+
assert_finished_in_order(job!(job3), batch3)
197+
assert_finished_in_order(job!(job2), batch2)
198+
assert_finished_in_order(job!(job1), batch1)
186199
end
187200

188201
test "failed jobs fire properly" do
@@ -218,7 +231,7 @@ def perform
218231

219232
assert_equal [ "failed", "failed" ].sort, SolidQueue::Batch.all.pluck(:status)
220233
assert_equal [ "0: 1 jobs failed!", "1: 1 jobs failed!" ], JobBuffer.values.sort
221-
assert_finished_in_order(batch2, batch1)
234+
assert_finished_in_order(batch2.reload, batch1.reload)
222235
end
223236

224237
test "discarded jobs fire properly" do
@@ -254,7 +267,7 @@ def perform
254267

255268
assert_equal [ "completed", "completed" ].sort, SolidQueue::Batch.all.pluck(:status)
256269
assert_equal [ "0: 1 jobs succeeded!", "1: 1 jobs succeeded!" ], JobBuffer.values.sort
257-
assert_finished_in_order(batch2, batch1)
270+
assert_finished_in_order(batch2.reload, batch1.reload)
258271
end
259272

260273
test "preserve_finished_jobs = false" do
@@ -300,32 +313,6 @@ def perform
300313
assert_equal 1, batch.total_jobs
301314
end
302315

303-
# test "batch finishes without firing callbacks if no jobs enqueue properly" do
304-
# ApplicationJob.enqueue_after_transaction_commit = true
305-
# batch1 = nil
306-
# JobResult.transaction do
307-
# batch1 = SolidQueue::Batch.enqueue(
308-
# metadata: { source: "test", priority: "high", user_id: 123 },
309-
# on_finish: OnFinishJob,
310-
# on_success: OnSuccessJob,
311-
# on_failure: OnFailureJob
312-
# ) do
313-
# AddToBufferJob.perform_later "hey"
314-
# end
315-
316-
# raise ActiveRecord::Rollback
317-
# end
318-
319-
# assert_equal [].sort, JobBuffer.values.sort
320-
# assert_equal 0, batch1.reload.completed_jobs
321-
# assert_equal 0, batch1.failed_jobs
322-
# assert_equal 0, batch1.pending_jobs
323-
# assert_equal 0, batch1.total_jobs
324-
# batch1.reload
325-
# assert_equal true, batch1.finished?
326-
# assert_equal "completed", batch1.status
327-
# end
328-
329316
class OnFinishJob < ApplicationJob
330317
queue_as :background
331318

0 commit comments

Comments
 (0)