@@ -121,6 +121,145 @@ def id
121
121
end
122
122
end
123
123
124
+ describe "#enqueue with exception object" do
125
+ let ( :event_name ) { "enqueue.active_job" }
126
+
127
+ let ( :payload ) do
128
+ {
129
+ adapter : ActiveJob ::QueueAdapters ::InlineAdapter . new ,
130
+ job : job ,
131
+ exception_object : ArgumentError . new ( "error" )
132
+ }
133
+ end
134
+
135
+ it "logs message" do
136
+ messages = semantic_logger_events do
137
+ subscriber . enqueue ( event )
138
+ end
139
+ assert_equal 1 , messages . count , messages
140
+
141
+ assert_semantic_logger_event (
142
+ messages [ 0 ] ,
143
+ level : :error ,
144
+ name : "Rails" ,
145
+ message_includes : "Failed enqueuing ActiveJobTest::MyJob" ,
146
+ payload_includes : {
147
+ job_class : "ActiveJobTest::MyJob" ,
148
+ queue : "my_jobs" ,
149
+ event_name : "enqueue.active_job"
150
+ }
151
+ )
152
+ assert_includes messages [ 0 ] . payload , :job_id
153
+
154
+ exception = messages [ 0 ] . exception
155
+ assert exception . is_a? ( ArgumentError )
156
+ assert_equal "error" , exception . message
157
+ end
158
+ end
159
+
160
+ describe "#enqueue with throwing :abort" do
161
+ let ( :event_name ) { "enqueue.active_job" }
162
+
163
+ let ( :payload ) do
164
+ {
165
+ adapter : ActiveJob ::QueueAdapters ::InlineAdapter . new ,
166
+ job : job ,
167
+ aborted : true
168
+ }
169
+ end
170
+
171
+ it "logs message" do
172
+ messages = semantic_logger_events do
173
+ subscriber . enqueue ( event )
174
+ end
175
+ assert_equal 1 , messages . count , messages
176
+
177
+ assert_semantic_logger_event (
178
+ messages [ 0 ] ,
179
+ level : :info ,
180
+ name : "Rails" ,
181
+ message_includes : "Failed enqueuing ActiveJobTest::MyJob" ,
182
+ payload_includes : {
183
+ job_class : "ActiveJobTest::MyJob" ,
184
+ queue : "my_jobs" ,
185
+ event_name : "enqueue.active_job"
186
+ }
187
+ )
188
+ assert_match /Failed enqueuing .*, a before_enqueue callback halted the enqueuing execution/ , messages [ 0 ] . message
189
+ assert_includes messages [ 0 ] . payload , :job_id
190
+ end
191
+ end
192
+
193
+ describe "#enqueue_at with exception object" do
194
+ let ( :event_name ) { "enqueue.active_job" }
195
+
196
+ let ( :payload ) do
197
+ {
198
+ adapter : ActiveJob ::QueueAdapters ::InlineAdapter . new ,
199
+ job : job ,
200
+ exception_object : ArgumentError . new ( "error" )
201
+ }
202
+ end
203
+
204
+ it "logs message" do
205
+ messages = semantic_logger_events do
206
+ subscriber . enqueue_at ( event )
207
+ end
208
+ assert_equal 1 , messages . count , messages
209
+
210
+ assert_semantic_logger_event (
211
+ messages [ 0 ] ,
212
+ level : :error ,
213
+ name : "Rails" ,
214
+ message_includes : "Failed enqueuing ActiveJobTest::MyJob" ,
215
+ payload_includes : {
216
+ job_class : "ActiveJobTest::MyJob" ,
217
+ queue : "my_jobs" ,
218
+ event_name : "enqueue.active_job"
219
+ }
220
+ )
221
+ assert_includes messages [ 0 ] . payload , :job_id
222
+
223
+ exception = messages [ 0 ] . exception
224
+ assert exception . is_a? ( ArgumentError )
225
+ assert_equal "error" , exception . message
226
+ end
227
+ end
228
+
229
+ describe "#enqueue_at with throwing :abort" do
230
+ let ( :event_name ) { "enqueue.active_job" }
231
+
232
+ let ( :payload ) do
233
+ {
234
+ adapter : ActiveJob ::QueueAdapters ::InlineAdapter . new ,
235
+ job : job ,
236
+ aborted : true
237
+ }
238
+ end
239
+
240
+ it "logs message" do
241
+ messages = semantic_logger_events do
242
+ subscriber . enqueue_at ( event )
243
+ end
244
+ assert_equal 1 , messages . count , messages
245
+
246
+ assert_semantic_logger_event (
247
+ messages [ 0 ] ,
248
+ level : :info ,
249
+ name : "Rails" ,
250
+ message_includes : "Failed enqueuing ActiveJobTest::MyJob" ,
251
+ payload_includes : {
252
+ job_class : "ActiveJobTest::MyJob" ,
253
+ queue : "my_jobs" ,
254
+ event_name : "enqueue.active_job"
255
+ }
256
+ )
257
+ assert_match /Failed enqueuing .*, a before_enqueue callback halted the enqueuing execution/ , messages [ 0 ] . message
258
+ assert_includes messages [ 0 ] . payload , :job_id
259
+ end
260
+ end
261
+
262
+
124
263
describe "ActiveJob::Logging::LogSubscriber::EventFormatter" do
125
264
let ( :formatter ) do
126
265
RailsSemanticLogger ::ActiveJob ::LogSubscriber ::EventFormatter . new ( event : event , log_duration : true )
0 commit comments