Skip to content

Commit 3553bd6

Browse files
authored
Merge pull request rails#53821 from larouxn/notification_assertions_activejob
Migrate applicable `activejob` tests to use `NotificationAssertions`
2 parents 3fbabdb + ca16e63 commit 3553bd6

File tree

3 files changed

+57
-78
lines changed

3 files changed

+57
-78
lines changed

activejob/test/cases/instrumentation_test.rb

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,43 +12,28 @@ class InstrumentationTest < ActiveSupport::TestCase
1212
end
1313

1414
test "perform_now emits perform events" do
15-
events = subscribed(/perform.*\.active_job/) { HelloJob.perform_now("World!") }
15+
events = capture_notifications(/perform.*\.active_job/) { HelloJob.perform_now("World!") }
16+
1617
assert_equal 2, events.size
17-
assert_equal "perform_start.active_job", events[0].first
18-
assert_equal "perform.active_job", events[1].first
18+
assert_equal "perform_start.active_job", events[0].name
19+
assert_equal "perform.active_job", events[1].name
1920
end
2021

2122
test "perform_later emits an enqueue event" do
22-
events = subscribed("enqueue.active_job") { HelloJob.perform_later("World!") }
23-
assert_equal 1, events.size
23+
assert_notifications_count("enqueue.active_job", 1) { HelloJob.perform_later("World!") }
2424
end
2525

2626
unless adapter_is?(:inline, :sneakers)
2727
test "retry emits an enqueue retry event" do
28-
events = subscribed("enqueue_retry.active_job") do
29-
perform_enqueued_jobs { RetryJob.perform_later("DefaultsError", 2) }
30-
end
31-
assert_equal 1, events.size
28+
assert_notifications_count("enqueue_retry.active_job", 1) { RetryJob.perform_later("DefaultsError", 2) }
3229
end
3330

3431
test "retry exhaustion emits a retry_stopped event" do
35-
events = subscribed("retry_stopped.active_job") do
36-
perform_enqueued_jobs { RetryJob.perform_later("CustomCatchError", 6) }
37-
end
38-
assert_equal 1, events.size
32+
assert_notifications_count("retry_stopped.active_job", 1) { RetryJob.perform_later("CustomCatchError", 6) }
3933
end
4034
end
4135

4236
test "discard emits a discard event" do
43-
events = subscribed("discard.active_job") do
44-
perform_enqueued_jobs { RetryJob.perform_later("DiscardableError", 2) }
45-
end
46-
assert_equal 1, events.size
47-
end
48-
49-
def subscribed(name, &block)
50-
[].tap do |events|
51-
ActiveSupport::Notifications.subscribed(-> (*args) { events << args }, name, &block)
52-
end
37+
assert_notifications_count("discard.active_job", 1) { RetryJob.perform_later("DiscardableError", 6) }
5338
end
5439
end

activejob/test/cases/logging_test.rb

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,6 @@ def set_logger(logger)
5050
ActiveJob::Base.logger = logger
5151
end
5252

53-
def subscribed(&block)
54-
[].tap do |events|
55-
ActiveSupport::Notifications.subscribed(-> (*args) { events << args }, /enqueue.*\.active_job/, &block)
56-
end
57-
end
58-
5953
def test_uses_active_job_as_tag
6054
HelloJob.perform_later "Cristian"
6155
assert_match(/\[ActiveJob\]/, @logger.messages)
@@ -105,32 +99,35 @@ def test_globalid_nested_parameter_logging
10599
end
106100

107101
def test_enqueue_job_logging
108-
events = subscribed { HelloJob.perform_later "Cristian" }
102+
assert_notifications_count(/enqueue.*\.active_job/, 1) do
103+
assert_notifications_count("enqueue.active_job", 1) do
104+
HelloJob.perform_later "Cristian"
105+
end
106+
end
107+
109108
assert_match(/Enqueued HelloJob \(Job ID: .*?\) to .*?:.*Cristian/, @logger.messages)
110-
assert_equal(1, events.count)
111-
key, * = events.first
112-
assert_equal("enqueue.active_job", key)
113109
end
114110

115111
def test_enqueue_job_log_error_when_callback_chain_is_halted
116-
events = subscribed { AbortBeforeEnqueueJob.perform_later }
112+
assert_notifications_count(/enqueue.*\.active_job/, 1) do
113+
assert_notification("enqueue.active_job") do
114+
AbortBeforeEnqueueJob.perform_later
115+
end
116+
end
117+
117118
assert_match(/Failed enqueuing AbortBeforeEnqueueJob.* a before_enqueue callback halted/, @logger.messages)
118-
assert_equal(1, events.count)
119-
key, * = events.first
120-
assert_equal("enqueue.active_job", key)
121119
end
122120

123121
def test_enqueue_job_log_error_when_error_is_raised_during_callback_chain
124-
events = subscribed do
125-
assert_raises(AbortBeforeEnqueueJob::MyError) do
126-
AbortBeforeEnqueueJob.perform_later(:raise)
122+
assert_notifications_count(/enqueue.*\.active_job/, 1) do
123+
assert_notification("enqueue.active_job") do
124+
assert_raises(AbortBeforeEnqueueJob::MyError) do
125+
AbortBeforeEnqueueJob.perform_later(:raise)
126+
end
127127
end
128128
end
129129

130130
assert_match(/Failed enqueuing AbortBeforeEnqueueJob/, @logger.messages)
131-
assert_equal(1, events.count)
132-
key, * = events.first
133-
assert_equal("enqueue.active_job", key)
134131
end
135132

136133
def test_perform_job_logging
@@ -154,7 +151,7 @@ def test_perform_job_logging_when_job_is_not_enqueued
154151
end
155152

156153
def test_perform_job_log_error_when_callback_chain_is_halted
157-
subscribed { AbortBeforeEnqueueJob.perform_now }
154+
AbortBeforeEnqueueJob.perform_now
158155
assert_match(/Error performing AbortBeforeEnqueueJob.* a before_perform callback halted/, @logger.messages)
159156
end
160157

@@ -165,7 +162,7 @@ def perform
165162
end
166163
end
167164

168-
subscribed { job.perform_now }
165+
job.perform_now
169166
assert_no_match(/Error performing AbortBeforeEnqueueJob.* a before_perform callback halted/, @logger.messages)
170167
end
171168

@@ -179,10 +176,8 @@ def perform(_)
179176
end
180177
end.new([:dont_abort, :abort])
181178

182-
subscribed do
183-
job.perform_now
184-
job.perform_now
185-
end
179+
job.perform_now
180+
job.perform_now
186181

187182
assert_equal(1, @logger.messages.scan(/a before_perform callback halted the job execution/).size)
188183
end
@@ -215,42 +210,47 @@ def test_perform_nested_jobs_logging
215210

216211
unless adapter_is?(:inline, :sneakers)
217212
def test_enqueue_at_job_logging
218-
events = subscribed { HelloJob.set(wait_until: 24.hours.from_now).perform_later "Cristian" }
213+
assert_notifications_count(/enqueue.*\.active_job/, 1) do
214+
assert_notification("enqueue_at.active_job") do
215+
HelloJob.set(wait_until: 24.hours.from_now).perform_later "Cristian"
216+
end
217+
end
218+
219219
assert_match(/Enqueued HelloJob \(Job ID: .*\) to .*? at.*Cristian/, @logger.messages)
220-
assert_equal(1, events.count)
221-
key, * = events.first
222-
assert_equal("enqueue_at.active_job", key)
223220
end
224221
end
225222

226223
def test_enqueue_at_job_log_error_when_callback_chain_is_halted
227-
events = subscribed { AbortBeforeEnqueueJob.set(wait: 1.second).perform_later }
224+
assert_notifications_count(/enqueue.*\.active_job/, 1) do
225+
assert_notification("enqueue_at.active_job") do
226+
AbortBeforeEnqueueJob.set(wait: 1.second).perform_later
227+
end
228+
end
229+
228230
assert_match(/Failed enqueuing AbortBeforeEnqueueJob.* a before_enqueue callback halted/, @logger.messages)
229-
assert_equal(1, events.count)
230-
key, * = events.first
231-
assert_equal("enqueue_at.active_job", key)
232231
end
233232

234233
def test_enqueue_at_job_log_error_when_error_is_raised_during_callback_chain
235-
events = subscribed do
236-
assert_raises(AbortBeforeEnqueueJob::MyError) do
237-
AbortBeforeEnqueueJob.set(wait: 1.second).perform_later(:raise)
234+
assert_notifications_count(/enqueue.*\.active_job/, 1) do
235+
assert_notification("enqueue_at.active_job") do
236+
assert_raises(AbortBeforeEnqueueJob::MyError) do
237+
AbortBeforeEnqueueJob.set(wait: 1.second).perform_later(:raise)
238+
end
238239
end
239240
end
240241

241242
assert_match(/Failed enqueuing AbortBeforeEnqueueJob/, @logger.messages)
242-
assert_equal(1, events.count)
243-
key, * = events.first
244-
assert_equal("enqueue_at.active_job", key)
245243
end
246244

247245
unless adapter_is?(:inline, :sneakers)
248246
def test_enqueue_in_job_logging
249-
events = subscribed { HelloJob.set(wait: 2.seconds).perform_later "Cristian" }
247+
assert_notifications_count(/enqueue.*\.active_job/, 1) do
248+
assert_notification("enqueue_at.active_job") do
249+
HelloJob.set(wait: 2.seconds).perform_later "Cristian"
250+
end
251+
end
252+
250253
assert_match(/Enqueued HelloJob \(Job ID: .*\) to .*? at.*Cristian/, @logger.messages)
251-
assert_equal(1, events.count)
252-
key, * = events.first
253-
assert_equal("enqueue_at.active_job", key)
254254
end
255255
end
256256

activejob/test/cases/queuing_test.rb

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,19 +87,13 @@ class QueuingTest < ActiveSupport::TestCase
8787

8888
test "perform_all_later instrumentation" do
8989
jobs = HelloJob.new("Jamie"), HelloJob.new("John")
90-
called = false
9190

92-
subscriber = proc do |_, _, _, _, payload|
93-
called = true
94-
assert payload[:adapter]
95-
assert_equal jobs, payload[:jobs]
96-
assert_equal 2, payload[:enqueued_count]
97-
end
98-
99-
ActiveSupport::Notifications.subscribed(subscriber, "enqueue_all.active_job") do
91+
payload = capture_notifications("enqueue_all.active_job") do
10092
ActiveJob.perform_all_later(jobs)
101-
end
93+
end.first.payload
10294

103-
assert called
95+
assert payload[:adapter]
96+
assert_equal jobs, payload[:jobs]
97+
assert_equal 2, payload[:enqueued_count]
10498
end
10599
end

0 commit comments

Comments
 (0)