@@ -64,6 +64,20 @@ def self.name; "LoggingJob"; end
64
64
end
65
65
end
66
66
67
+ let ( :two_args_job ) do
68
+ Class . new ( ActiveJob ::Base ) do
69
+ def perform ( one , two ) ; end
70
+ def self . name ; "TwoArgsJob" ; end
71
+ end
72
+ end
73
+
74
+ let ( :keyword_args_job ) do
75
+ Class . new ( ActiveJob ::Base ) do
76
+ def perform ( one :, two :) ; end
77
+ def self . name ; "KeywordArgsJob" ; end
78
+ end
79
+ end
80
+
67
81
before do
68
82
ActiveJob ::Base . queue_adapter = :test
69
83
end
@@ -138,7 +152,7 @@ def perform; raise StandardError; end
138
152
it "fails when job is not enqueued" do
139
153
expect {
140
154
expect { } . to have_enqueued_job
141
- } . to raise_error ( /expected to enqueue exactly 1 jobs, but enqueued 0/ )
155
+ } . to fail_with ( /expected to enqueue exactly 1 jobs, but enqueued 0/ )
142
156
end
143
157
144
158
it "fails when too many jobs enqueued" do
@@ -147,20 +161,20 @@ def perform; raise StandardError; end
147
161
heavy_lifting_job . perform_later
148
162
heavy_lifting_job . perform_later
149
163
} . to have_enqueued_job . exactly ( 1 )
150
- } . to raise_error ( /expected to enqueue exactly 1 jobs, but enqueued 2/ )
164
+ } . to fail_with ( /expected to enqueue exactly 1 jobs, but enqueued 2/ )
151
165
end
152
166
153
167
it "reports correct number in fail error message" do
154
168
heavy_lifting_job . perform_later
155
169
expect {
156
170
expect { } . to have_enqueued_job . exactly ( 1 )
157
- } . to raise_error ( /expected to enqueue exactly 1 jobs, but enqueued 0/ )
171
+ } . to fail_with ( /expected to enqueue exactly 1 jobs, but enqueued 0/ )
158
172
end
159
173
160
174
it "fails when negated and job is enqueued" do
161
175
expect {
162
176
expect { heavy_lifting_job . perform_later } . not_to have_enqueued_job
163
- } . to raise_error ( /expected not to enqueue at least 1 jobs, but enqueued 1/ )
177
+ } . to fail_with ( /expected not to enqueue at least 1 jobs, but enqueued 1/ )
164
178
end
165
179
166
180
it "fails when negated and several jobs enqueued" do
@@ -169,7 +183,7 @@ def perform; raise StandardError; end
169
183
heavy_lifting_job . perform_later
170
184
heavy_lifting_job . perform_later
171
185
} . not_to have_enqueued_job
172
- } . to raise_error ( /expected not to enqueue at least 1 jobs, but enqueued 2/ )
186
+ } . to fail_with ( /expected not to enqueue at least 1 jobs, but enqueued 2/ )
173
187
end
174
188
175
189
it "passes with job name" do
@@ -224,7 +238,7 @@ def perform; raise StandardError; end
224
238
it "generates failure message with at least hint" do
225
239
expect {
226
240
expect { } . to have_enqueued_job . at_least ( :once )
227
- } . to raise_error ( /expected to enqueue at least 1 jobs, but enqueued 0/ )
241
+ } . to fail_with ( /expected to enqueue at least 1 jobs, but enqueued 0/ )
228
242
end
229
243
230
244
it "generates failure message with at most hint" do
@@ -233,7 +247,7 @@ def perform; raise StandardError; end
233
247
hello_job . perform_later
234
248
hello_job . perform_later
235
249
} . to have_enqueued_job . at_most ( :once )
236
- } . to raise_error ( /expected to enqueue at most 1 jobs, but enqueued 2/ )
250
+ } . to fail_with ( /expected to enqueue at most 1 jobs, but enqueued 2/ )
237
251
end
238
252
239
253
it "passes with provided queue name as string" do
@@ -277,7 +291,7 @@ def perform; raise StandardError; end
277
291
travel_to time do
278
292
expect {
279
293
expect { hello_job . set ( wait : 5 ) . perform_later } . to have_enqueued_job . at ( time + 5 )
280
- } . to raise_error ( /expected to enqueue exactly 1 jobs/ )
294
+ } . to fail_with ( /expected to enqueue exactly 1 jobs/ )
281
295
end
282
296
end
283
297
@@ -301,7 +315,7 @@ def perform; raise StandardError; end
301
315
expect {
302
316
hello_job . perform_later
303
317
} . to have_enqueued_job . at ( date )
304
- } . to raise_error ( /expected to enqueue exactly 1 jobs, at .+ but enqueued 0/ )
318
+ } . to fail_with ( /expected to enqueue exactly 1 jobs, at .+ but enqueued 0/ )
305
319
end
306
320
307
321
it "has an enqueued job when not providing at and there is a wait" do
@@ -324,6 +338,22 @@ def perform; raise StandardError; end
324
338
} . to have_enqueued_job . with ( 42 , "David" )
325
339
end
326
340
341
+ it "fails if the arguments do not match the job's signature" do
342
+ expect {
343
+ expect {
344
+ two_args_job . perform_later ( 1 )
345
+ } . to have_enqueued_job . with ( 1 )
346
+ } . to fail_with ( /Incorrect arguments passed to TwoArgsJob: Wrong number of arguments/ )
347
+ end
348
+
349
+ it "fails if the job's signature/arguments are mismatched keyword/positional arguments" do
350
+ expect {
351
+ expect {
352
+ keyword_args_job . perform_later ( 1 , 2 )
353
+ } . to have_enqueued_job . with ( 1 , 2 )
354
+ } . to fail_with ( /Incorrect arguments passed to KeywordArgsJob: Missing required keyword arguments/ )
355
+ end
356
+
327
357
it "passes with provided arguments containing global id object" do
328
358
global_id_object = GlobalIdModel . new ( "42" )
329
359
@@ -348,7 +378,7 @@ def perform; raise StandardError; end
348
378
expect {
349
379
hello_job . perform_later ( 1 )
350
380
} . to have_enqueued_job ( hello_job ) . with ( 42 ) . on_queue ( "low" ) . at ( date ) . exactly ( 2 ) . times
351
- } . to raise_error ( message )
381
+ } . to fail_with ( message )
352
382
end
353
383
354
384
it "throws descriptive error when no test adapter set" do
@@ -454,15 +484,31 @@ def perform; raise StandardError; end
454
484
it "fails when job is not enqueued" do
455
485
expect {
456
486
expect ( heavy_lifting_job ) . to have_been_enqueued
457
- } . to raise_error ( /expected to enqueue exactly 1 jobs, but enqueued 0/ )
487
+ } . to fail_with ( /expected to enqueue exactly 1 jobs, but enqueued 0/ )
488
+ end
489
+
490
+ it "fails if the arguments do not match the job's signature" do
491
+ two_args_job . perform_later ( 1 )
492
+
493
+ expect {
494
+ expect ( two_args_job ) . to have_been_enqueued . with ( 1 )
495
+ } . to fail_with ( /Incorrect arguments passed to TwoArgsJob: Wrong number of arguments/ )
496
+ end
497
+
498
+ it "fails if the job's signature/arguments are mismatched keyword/positional arguments" do
499
+ keyword_args_job . perform_later ( 1 , 2 )
500
+
501
+ expect {
502
+ expect ( keyword_args_job ) . to have_been_enqueued . with ( 1 , 2 )
503
+ } . to fail_with ( /Incorrect arguments passed to KeywordArgsJob: Missing required keyword arguments/ )
458
504
end
459
505
460
506
it "fails when negated and several jobs enqueued" do
461
507
heavy_lifting_job . perform_later
462
508
heavy_lifting_job . perform_later
463
509
expect {
464
510
expect ( heavy_lifting_job ) . not_to have_been_enqueued
465
- } . to raise_error ( /expected not to enqueue at least 1 jobs, but enqueued 2/ )
511
+ } . to fail_with ( /expected not to enqueue at least 1 jobs, but enqueued 2/ )
466
512
end
467
513
468
514
it "accepts composable matchers as an at date" do
@@ -511,7 +557,7 @@ def perform; raise StandardError; end
511
557
it "fails when job is not performed" do
512
558
expect {
513
559
expect { } . to have_performed_job
514
- } . to raise_error ( /expected to perform exactly 1 jobs, but performed 0/ )
560
+ } . to fail_with ( /expected to perform exactly 1 jobs, but performed 0/ )
515
561
end
516
562
517
563
it "fails when too many jobs performed" do
@@ -520,20 +566,20 @@ def perform; raise StandardError; end
520
566
heavy_lifting_job . perform_later
521
567
heavy_lifting_job . perform_later
522
568
} . to have_performed_job . exactly ( 1 )
523
- } . to raise_error ( /expected to perform exactly 1 jobs, but performed 2/ )
569
+ } . to fail_with ( /expected to perform exactly 1 jobs, but performed 2/ )
524
570
end
525
571
526
572
it "reports correct number in fail error message" do
527
573
heavy_lifting_job . perform_later
528
574
expect {
529
575
expect { } . to have_performed_job . exactly ( 1 )
530
- } . to raise_error ( /expected to perform exactly 1 jobs, but performed 0/ )
576
+ } . to fail_with ( /expected to perform exactly 1 jobs, but performed 0/ )
531
577
end
532
578
533
579
it "fails when negated and job is performed" do
534
580
expect {
535
581
expect { heavy_lifting_job . perform_later } . not_to have_performed_job
536
- } . to raise_error ( /expected not to perform exactly 1 jobs, but performed 1/ )
582
+ } . to fail_with ( /expected not to perform exactly 1 jobs, but performed 1/ )
537
583
end
538
584
539
585
it "passes with job name" do
@@ -588,7 +634,7 @@ def perform; raise StandardError; end
588
634
it "generates failure message with at least hint" do
589
635
expect {
590
636
expect { } . to have_performed_job . at_least ( :once )
591
- } . to raise_error ( /expected to perform at least 1 jobs, but performed 0/ )
637
+ } . to fail_with ( /expected to perform at least 1 jobs, but performed 0/ )
592
638
end
593
639
594
640
it "generates failure message with at most hint" do
@@ -597,7 +643,7 @@ def perform; raise StandardError; end
597
643
hello_job . perform_later
598
644
hello_job . perform_later
599
645
} . to have_performed_job . at_most ( :once )
600
- } . to raise_error ( /expected to perform at most 1 jobs, but performed 2/ )
646
+ } . to fail_with ( /expected to perform at most 1 jobs, but performed 2/ )
601
647
end
602
648
603
649
it "passes with provided queue name as string" do
@@ -649,7 +695,7 @@ def perform; raise StandardError; end
649
695
expect {
650
696
hello_job . perform_later ( 1 )
651
697
} . to have_performed_job ( hello_job ) . with ( 42 ) . on_queue ( "low" ) . at ( date ) . exactly ( 2 ) . times
652
- } . to raise_error ( message )
698
+ } . to fail_with ( message )
653
699
end
654
700
655
701
it "throws descriptive error when no test adapter set" do
@@ -734,7 +780,7 @@ def perform; raise StandardError; end
734
780
it "fails when job is not performed" do
735
781
expect {
736
782
expect ( heavy_lifting_job ) . to have_been_performed
737
- } . to raise_error ( /expected to perform exactly 1 jobs, but performed 0/ )
783
+ } . to fail_with ( /expected to perform exactly 1 jobs, but performed 0/ )
738
784
end
739
785
end
740
786
0 commit comments