71 lines
1.7 KiB
Ruby
71 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe Faraday::Middleware do
|
|
subject { described_class.new(app) }
|
|
let(:app) { double }
|
|
|
|
describe 'options' do
|
|
context 'when options are passed to the middleware' do
|
|
subject { described_class.new(app, options) }
|
|
let(:options) { { field: 'value' } }
|
|
|
|
it 'accepts options when initialized' do
|
|
expect(subject.options[:field]).to eq('value')
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#on_request' do
|
|
subject do
|
|
Class.new(described_class) do
|
|
def on_request(env)
|
|
# do nothing
|
|
end
|
|
end.new(app)
|
|
end
|
|
|
|
it 'is called by #call' do
|
|
expect(app).to receive(:call).and_return(app)
|
|
expect(app).to receive(:on_complete)
|
|
is_expected.to receive(:call).and_call_original
|
|
is_expected.to receive(:on_request)
|
|
subject.call(double)
|
|
end
|
|
end
|
|
|
|
describe '#on_error' do
|
|
subject do
|
|
Class.new(described_class) do
|
|
def on_error(error)
|
|
# do nothing
|
|
end
|
|
end.new(app)
|
|
end
|
|
|
|
it 'is called by #call' do
|
|
expect(app).to receive(:call).and_raise(Faraday::ConnectionFailed)
|
|
is_expected.to receive(:call).and_call_original
|
|
is_expected.to receive(:on_error)
|
|
|
|
expect { subject.call(double) }.to raise_error(Faraday::ConnectionFailed)
|
|
end
|
|
end
|
|
|
|
describe '#close' do
|
|
context "with app that doesn't support \#close" do
|
|
it 'should issue warning' do
|
|
is_expected.to receive(:warn)
|
|
subject.close
|
|
end
|
|
end
|
|
|
|
context "with app that supports \#close" do
|
|
it 'should issue warning' do
|
|
expect(app).to receive(:close)
|
|
is_expected.to_not receive(:warn)
|
|
subject.close
|
|
end
|
|
end
|
|
end
|
|
end
|