summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/sidekiq_logging/exception_handler_spec.rb
blob: 24b6090cb195f3799e1e51fc9b634ca67147ba71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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