spec/connectors/tolerable_error_helper_spec.rb (42 lines of code) (raw):
#
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License;
# you may not use this file except in compliance with the Elastic License.
#
# frozen_string_literal: true
require 'connectors/tolerable_error_helper'
describe Connectors::TolerableErrorHelper do
let(:error_monitor) { double }
subject { described_class.new(error_monitor) }
before(:each) do
allow(Utility::Logger).to receive(:debug)
allow(Utility::Logger).to receive(:error)
allow(Utility::Logger).to receive(:warn)
allow(error_monitor).to receive(:note_success)
allow(error_monitor).to receive(:note_error)
end
describe '#yield_single_document' do
context 'when no errors happen' do
it 'notes success to error monitor' do
expect(error_monitor).to receive(:note_success)
subject.yield_single_document(identifier: 'hello!') do
{ :bring => 'a_towel' }
end
end
end
context 'when an error happens' do
let(:error) { StandardError.new }
let(:unique_error_id) { 'hey im an error' }
before(:each) do
allow(Utility::ExceptionTracking).to receive(:augment_exception).with(error) # this method actually populates id of the error
allow(error).to receive(:id).and_return(unique_error_id)
end
it 'augments the error' do
expect(Utility::ExceptionTracking).to receive(:augment_exception).with(error)
subject.yield_single_document(identifier: 'hello!') do
raise error
end
end
it 'notes failure to error monitor' do
expect(error_monitor).to receive(:note_error).with(error, { :id => unique_error_id })
subject.yield_single_document(identifier: 'hello!') do
raise error
end
end
end
end
end