Welcome to mirror list, hosted at ThFree Co, Russian Federation.

error_event_spec.rb « error_tracking « models « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 8e20eb25353d3ec7f1dce9adcaa42e40cbe47003 (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
45
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe ErrorTracking::ErrorEvent, type: :model do
  let_it_be(:event) { create(:error_tracking_error_event) }

  describe 'relationships' do
    it { is_expected.to belong_to(:error) }
  end

  describe 'validations' do
    it { is_expected.to validate_presence_of(:description) }
    it { is_expected.to validate_presence_of(:occurred_at) }
  end

  describe '#stacktrace' do
    it 'generates a correct stacktrace in expected format' do
      expected_context = [
        [132, "          end\n"],
        [133, "\n"],
        [134, "          begin\n"],
        [135, "            block.call(work, *extra)\n"],
        [136, "          rescue Exception => e\n"],
        [137, "            STDERR.puts \"Error reached top of thread-pool: #\{e.message\} (#\{e.class\})\"\n"],
        [138, "          end\n"]
      ]

      expected_entry = {
        'lineNo' => 135,
        'context' => expected_context,
        'filename' => 'puma/thread_pool.rb',
        'function' => 'block in spawn_thread',
        'colNo' => 0
      }

      expect(event.stacktrace).to be_kind_of(Array)
      expect(event.stacktrace.first).to eq(expected_entry)
    end
  end

  describe '#to_sentry_error_event' do
    it { expect(event.to_sentry_error_event).to be_kind_of(Gitlab::ErrorTracking::ErrorEvent) }
  end
end