summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/sidekiq_logging/exception_handler_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/sidekiq_logging/exception_handler_spec.rb')
-rw-r--r--spec/lib/gitlab/sidekiq_logging/exception_handler_spec.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/spec/lib/gitlab/sidekiq_logging/exception_handler_spec.rb b/spec/lib/gitlab/sidekiq_logging/exception_handler_spec.rb
new file mode 100644
index 00000000000..24b6090cb19
--- /dev/null
+++ b/spec/lib/gitlab/sidekiq_logging/exception_handler_spec.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::SidekiqLogging::ExceptionHandler do
+ describe '#call' do
+ let(:job) do
+ {
+ "class" => "TestWorker",
+ "args" => [1234, 'hello'],
+ "retry" => false,
+ "queue" => "cronjob:test_queue",
+ "queue_namespace" => "cronjob",
+ "jid" => "da883554ee4fe414012f5f42",
+ "correlation_id" => 'cid'
+ }
+ end
+
+ let(:exception_message) { 'An error was thrown' }
+ let(:backtrace) { caller }
+ let(:exception) { RuntimeError.new(exception_message) }
+ let(:logger) { double }
+
+ before do
+ allow(Sidekiq).to receive(:logger).and_return(logger)
+ allow(exception).to receive(:backtrace).and_return(backtrace)
+ end
+
+ subject { described_class.new.call(exception, { context: 'Test', job: job }) }
+
+ it 'logs job data into root tree' do
+ expected_data = job.merge(
+ error_class: 'RuntimeError',
+ error_message: exception_message,
+ context: 'Test',
+ error_backtrace: Gitlab::Profiler.clean_backtrace(backtrace)
+ )
+
+ expect(logger).to receive(:warn).with(expected_data)
+
+ subject
+ end
+ end
+end