@@ -42,6 +42,13 @@ def self.find(_id)
42
42
ActiveJob ::Base . logger = original_logger
43
43
end
44
44
45
+ around do |example |
46
+ original_value = RSpec ::Mocks . configuration . verify_partial_doubles?
47
+ example . run
48
+ ensure
49
+ RSpec ::Mocks . configuration . verify_partial_doubles = original_value
50
+ end
51
+
45
52
let ( :heavy_lifting_job ) do
46
53
Class . new ( ActiveJob ::Base ) do
47
54
def perform ; end
@@ -372,20 +379,42 @@ def perform; raise StandardError; end
372
379
} . to have_enqueued_job . with ( 42 , "David" )
373
380
end
374
381
375
- it "fails if the arguments do not match the job's signature" do
376
- expect {
382
+ describe "verifying the arguments passed match the job's signature" do
383
+ it "fails if there is an arity mismatch" do
377
384
expect {
378
- two_args_job . perform_later ( 1 )
379
- } . to have_enqueued_job . with ( 1 )
380
- } . to fail_with ( /Incorrect arguments passed to TwoArgsJob: Wrong number of arguments/ )
381
- end
385
+ expect {
386
+ two_args_job . perform_later ( 1 )
387
+ } . to have_enqueued_job . with ( 1 )
388
+ } . to fail_with ( /Incorrect arguments passed to TwoArgsJob: Wrong number of arguments/ )
389
+ end
382
390
383
- it "fails if the job's signature/arguments are mismatched keyword/positional arguments" do
384
- expect {
391
+ it "fails if there is a keyword/positional arguments mismatch" do
385
392
expect {
386
- keyword_args_job . perform_later ( 1 , 2 )
387
- } . to have_enqueued_job . with ( 1 , 2 )
388
- } . to fail_with ( /Incorrect arguments passed to KeywordArgsJob: Missing required keyword arguments/ )
393
+ expect {
394
+ keyword_args_job . perform_later ( 1 , 2 )
395
+ } . to have_enqueued_job . with ( 1 , 2 )
396
+ } . to fail_with ( /Incorrect arguments passed to KeywordArgsJob: Missing required keyword arguments/ )
397
+ end
398
+
399
+ context "with partial double verification disabled" do
400
+ before do
401
+ RSpec ::Mocks . configuration . verify_partial_doubles = false
402
+ end
403
+
404
+ it "skips signature checks" do
405
+ expect { two_args_job . perform_later ( 1 ) } . to have_enqueued_job . with ( 1 )
406
+ end
407
+ end
408
+
409
+ context "when partial double verification is temporarily suspended" do
410
+ it "skips signature checks" do
411
+ without_partial_double_verification {
412
+ expect {
413
+ two_args_job . perform_later ( 1 )
414
+ } . to have_enqueued_job . with ( 1 )
415
+ }
416
+ end
417
+ end
389
418
end
390
419
391
420
it "passes with provided arguments containing global id object" do
@@ -521,20 +550,44 @@ def perform; raise StandardError; end
521
550
} . to fail_with ( /expected to enqueue exactly 1 jobs, but enqueued 0/ )
522
551
end
523
552
524
- it "fails if the arguments do not match the job's signature" do
525
- two_args_job . perform_later ( 1 )
553
+ describe "verifying the arguments passed match the job's signature" do
554
+ it "fails if there is an arity mismatch" do
555
+ two_args_job . perform_later ( 1 )
526
556
527
- expect {
528
- expect ( two_args_job ) . to have_been_enqueued . with ( 1 )
529
- } . to fail_with ( /Incorrect arguments passed to TwoArgsJob: Wrong number of arguments/ )
530
- end
557
+ expect {
558
+ expect ( two_args_job ) . to have_been_enqueued . with ( 1 )
559
+ } . to fail_with ( /Incorrect arguments passed to TwoArgsJob: Wrong number of arguments/ )
560
+ end
531
561
532
- it "fails if the job's signature/arguments are mismatched keyword/positional arguments" do
533
- keyword_args_job . perform_later ( 1 , 2 )
562
+ it "fails if there is a keyword/positional arguments mismatch " do
563
+ keyword_args_job . perform_later ( 1 , 2 )
534
564
535
- expect {
536
- expect ( keyword_args_job ) . to have_been_enqueued . with ( 1 , 2 )
537
- } . to fail_with ( /Incorrect arguments passed to KeywordArgsJob: Missing required keyword arguments/ )
565
+ expect {
566
+ expect ( keyword_args_job ) . to have_been_enqueued . with ( 1 , 2 )
567
+ } . to fail_with ( /Incorrect arguments passed to KeywordArgsJob: Missing required keyword arguments/ )
568
+ end
569
+
570
+ context "with partial double verification disabled" do
571
+ before do
572
+ RSpec ::Mocks . configuration . verify_partial_doubles = false
573
+ end
574
+
575
+ it "skips signature checks" do
576
+ keyword_args_job . perform_later ( 1 , 2 )
577
+
578
+ expect ( keyword_args_job ) . to have_been_enqueued . with ( 1 , 2 )
579
+ end
580
+ end
581
+
582
+ context "when partial double verification is temporarily suspended" do
583
+ it "skips signature checks" do
584
+ keyword_args_job . perform_later ( 1 , 2 )
585
+
586
+ without_partial_double_verification {
587
+ expect ( keyword_args_job ) . to have_been_enqueued . with ( 1 , 2 )
588
+ }
589
+ end
590
+ end
538
591
end
539
592
540
593
it "fails when negated and several jobs enqueued" do
0 commit comments