File tree Expand file tree Collapse file tree 2 files changed +35
-1
lines changed Expand file tree Collapse file tree 2 files changed +35
-1
lines changed Original file line number Diff line number Diff line change @@ -63,6 +63,8 @@ def unblock
63
63
64
64
def cancel
65
65
with_lock do
66
+ return if destroyed?
67
+
66
68
Delayed ::Job . enqueue ( on_cancellation_job , on_cancellation_job_options || { } ) if on_cancellation_job
67
69
destroy
68
70
end
Original file line number Diff line number Diff line change 299
299
end
300
300
301
301
describe "#cancel" do
302
+ subject ( :job_group ) do
303
+ create (
304
+ :job_group ,
305
+ on_completion_job : on_completion_job ,
306
+ on_completion_job_options : on_completion_job_options ,
307
+ on_cancellation_job : on_cancellation_job ,
308
+ on_cancellation_job_options : on_cancellation_job_options ,
309
+ blocked : blocked
310
+ )
311
+ end
312
+
302
313
let! ( :queued_job ) { Delayed ::Job . create! ( job_group_id : job_group . id ) }
303
314
let! ( :running_job ) { Delayed ::Job . create! ( job_group_id : job_group . id , locked_at : Time . now , locked_by : 'test' ) }
315
+ let ( :before_hook ) { }
316
+ let ( :on_cancellation_job ) { 'dummy job' }
317
+ let ( :on_cancellation_job_options ) do
318
+ { foo : 'bar' }
319
+ end
320
+ let ( :cancel ) { true }
304
321
305
322
before do
306
- job_group . cancel
323
+ job_group . cancel if cancel
307
324
end
308
325
309
326
it "destroys the job group" do
317
334
it "does not destroy running jobs" do
318
335
expect ( running_job ) . not_to have_been_destroyed
319
336
end
337
+
338
+ context "when already cancelled" do
339
+ let ( :cancel ) { false }
340
+
341
+ it "skips cancel block if already cancelled" do
342
+ other = Delayed ::JobGroups ::JobGroup . find ( job_group . id )
343
+ job_group . cancel
344
+
345
+ other . cancel
346
+ other . cancel
347
+
348
+ expect ( Delayed ::Job )
349
+ . to have_received ( :enqueue ) . with ( on_cancellation_job , on_cancellation_job_options ) . once
350
+ end
351
+ end
320
352
end
321
353
322
354
describe "#failure_cancels_group?" do
You can’t perform that action at this time.
0 commit comments