@@ -121,6 +121,145 @@ def id
121121 end
122122 end
123123
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+
124263 describe "ActiveJob::Logging::LogSubscriber::EventFormatter" do
125264 let ( :formatter ) do
126265 RailsSemanticLogger ::ActiveJob ::LogSubscriber ::EventFormatter . new ( event : event , log_duration : true )
0 commit comments