42 lines
1.4 KiB
Ruby
42 lines
1.4 KiB
Ruby
require 'rails_helper'
|
|
# explicitly requiring since we are loading apms conditionally in application.rb
|
|
require 'sentry-ruby'
|
|
|
|
describe ChatwootExceptionTracker do
|
|
it 'use rails logger if no tracker is configured' do
|
|
expect(Rails.logger).to receive(:error).with('random')
|
|
described_class.new('random').capture_exception
|
|
end
|
|
|
|
context 'with sentry DSN' do
|
|
before do
|
|
# since sentry is not initated in test, we need to do it manually
|
|
Sentry.init do |config|
|
|
config.dsn = 'test'
|
|
end
|
|
end
|
|
|
|
it 'will call sentry capture exception' do
|
|
with_modified_env SENTRY_DSN: 'random dsn' do
|
|
expect(Sentry).to receive(:capture_exception).with('random')
|
|
described_class.new('random').capture_exception
|
|
end
|
|
end
|
|
|
|
it 'sets additional context when provided' do
|
|
additional_context = { key1: 'value1', key2: 'value2' }
|
|
|
|
with_modified_env SENTRY_DSN: 'random dsn' do
|
|
scope = instance_double(Sentry::Scope)
|
|
allow(Sentry).to receive(:with_scope).and_yield(scope)
|
|
|
|
expect(scope).to receive(:set_context).with('key1', 'value1')
|
|
expect(scope).to receive(:set_context).with('key2', 'value2')
|
|
expect(Sentry).to receive(:capture_exception).with('random')
|
|
|
|
described_class.new('random', additional_context: additional_context).capture_exception
|
|
end
|
|
end
|
|
end
|
|
end
|