diff options
Diffstat (limited to 'spec/lib/gitlab/sidekiq_logging/exception_handler_spec.rb')
-rw-r--r-- | spec/lib/gitlab/sidekiq_logging/exception_handler_spec.rb | 44 |
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 |