@@ -16,7 +16,8 @@ def initialize
16
16
@queue = nil
17
17
@at = nil
18
18
@block = Proc . new { }
19
- set_expected_number ( :exactly , 1 )
19
+ @using_default_expected_number = true
20
+ silently_set_expected_number ( :exactly , 1 )
20
21
end
21
22
22
23
def with ( *args , &block )
@@ -78,7 +79,7 @@ def failure_message
78
79
end
79
80
80
81
def failure_message_when_negated
81
- "expected not to enqueue #{ base_message } "
82
+ "expected not to enqueue #{ base_negative_message } "
82
83
end
83
84
84
85
def message_expectation_modifier
@@ -95,6 +96,10 @@ def supports_block_expectations?
95
96
96
97
private
97
98
99
+ def using_default_expected_number?
100
+ @using_default_expected_number
101
+ end
102
+
98
103
def check ( jobs )
99
104
@matching_jobs , @unmatching_jobs = jobs . partition do |job |
100
105
if arguments_match? ( job ) && other_attributes_match? ( job )
@@ -115,7 +120,19 @@ def check(jobs)
115
120
end
116
121
117
122
def base_message
118
- "#{ message_expectation_modifier } #{ @expected_number } jobs," . tap do |msg |
123
+ message_with_base_info ( "#{ message_expectation_modifier } #{ @expected_number } jobs," )
124
+ end
125
+
126
+ def base_negative_message
127
+ if @expectation_type == :exactly && @expected_number . zero?
128
+ message_with_base_info ( "job," )
129
+ else
130
+ base_message
131
+ end
132
+ end
133
+
134
+ def message_with_base_info ( intro_message )
135
+ intro_message . dup . tap do |msg |
119
136
msg << " with #{ @args } ," if @args . any?
120
137
msg << " on queue #{ @queue } ," if @queue
121
138
msg << " at #{ @at } ," if @at
@@ -156,6 +173,11 @@ def serialized_attributes
156
173
end
157
174
158
175
def set_expected_number ( relativity , count )
176
+ @using_default_expected_number = false
177
+ silently_set_expected_number ( relativity , count )
178
+ end
179
+
180
+ def silently_set_expected_number ( relativity , count )
159
181
@expectation_type = relativity
160
182
@expected_number = case count
161
183
when :once then 1
@@ -187,6 +209,15 @@ def matches?(proc)
187
209
188
210
check ( in_block_jobs )
189
211
end
212
+
213
+ def does_not_match? ( proc )
214
+ if using_default_expected_number?
215
+ silently_set_expected_number ( :exactly , 0 )
216
+ matches? ( proc )
217
+ else
218
+ !matches? ( proc )
219
+ end
220
+ end
190
221
end
191
222
192
223
# @private
0 commit comments