Sha256: 6abc9c765172dd9a6c3873d40557d012d512ffddb53102341efab6c955f97f30
Contents?: true
Size: 1.91 KB
Versions: 80
Compression:
Stored size: 1.91 KB
Contents
# frozen_string_literal: true RSpec.describe Faraday::Request::Instrumentation do class FakeInstrumenter attr_reader :instrumentations def initialize @instrumentations = [] end def instrument(name, env) @instrumentations << [name, env] yield end end let(:config) { {} } let(:options) { Faraday::Request::Instrumentation::Options.from config } let(:instrumenter) { FakeInstrumenter.new } let(:conn) do Faraday.new do |f| f.request :instrumentation, config.merge(instrumenter: instrumenter) f.adapter :test do |stub| stub.get '/' do [200, {}, 'ok'] end end end end it { expect(options.name).to eq('request.faraday') } it 'defaults to ActiveSupport::Notifications' do begin res = options.instrumenter rescue NameError => e expect(e.to_s).to match('ActiveSupport') else expect(res).to eq(ActiveSupport::Notifications) end end it 'instruments with default name' do expect(instrumenter.instrumentations.size).to eq(0) res = conn.get '/' expect(res.body).to eq('ok') expect(instrumenter.instrumentations.size).to eq(1) name, env = instrumenter.instrumentations.first expect(name).to eq('request.faraday') expect(env[:url].path).to eq('/') end context 'with custom name' do let(:config) { { name: 'custom' } } it { expect(options.name).to eq('custom') } it 'instruments with custom name' do expect(instrumenter.instrumentations.size).to eq(0) res = conn.get '/' expect(res.body).to eq('ok') expect(instrumenter.instrumentations.size).to eq(1) name, env = instrumenter.instrumentations.first expect(name).to eq('custom') expect(env[:url].path).to eq('/') end end context 'with custom instrumenter' do let(:config) { { instrumenter: :custom } } it { expect(options.instrumenter).to eq(:custom) } end end
Version data entries
80 entries across 67 versions & 16 rubygems