Files
discourse/spec/lib/sidekiq/discourse_event_spec.rb
Alan Guo Xiang Tan 918aa0fbec DEV: Add :sidekiq_job_error DiscourseEvent (#32307)
This commit adds a `:sidekiq_job_error` event which is
triggered when an error is encountered while running a Sidekiq job. The
intent of this change is to complement the `:sidekq_job_ran` event which
can be used with the `:sidekiq_job_error` event to calculate the error
rate for each job.
2025-04-17 15:41:58 +08:00

55 lines
1.7 KiB
Ruby

# frozen_string_literal: true
RSpec.describe Sidekiq::DiscourseEvent do
describe "#call" do
it "should trigger the `sidekiq_job_ran` discourse event when successfully executing the block" do
called = false
events =
DiscourseEvent.track_events(:sidekiq_job_ran) do
described_class
.new
.call("SomeClass", { some_key: "some_value" }, "some_queue_name") { called = true }
end
expect(called).to eq(true)
expect(events.length).to eq(1)
event = events.first
expect(event[:event_name]).to eq(:sidekiq_job_ran)
expect(event[:params][0]).to eq("SomeClass")
expect(event[:params][1]).to eq({ some_key: "some_value" })
expect(event[:params][2]).to eq("some_queue_name")
expect(event[:params][3]).to be_a(Float)
end
it "should trigger `sidekiq_job_error` discourse event when an error occurs while executing the block" do
called = false
events =
DiscourseEvent.track_events(:sidekiq_job_error) do
expect do
described_class
.new
.call("SomeClass", { some_key: "some_value" }, "some_queue_name") do
called = true
raise StandardError, "Boom!"
end
end.to raise_error(StandardError, "Boom!")
end
expect(called).to eq(true)
expect(events.length).to eq(1)
event = events.first
expect(event[:event_name]).to eq(:sidekiq_job_error)
expect(event[:params][0]).to eq("SomeClass")
expect(event[:params][1]).to eq({ some_key: "some_value" })
expect(event[:params][2]).to eq("some_queue_name")
expect(event[:params][3]).to be_a(Float)
end
end
end