This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user