require 'spec_helper' describe SlackRubyBot::App do def app SlackRubyBot::App.new end it_behaves_like 'a slack ruby bot' context 'retries on rtm.start errors' do let(:client) { Slack::RealTime::Client.new } let(:logger) { subject.send :logger } before do allow(subject).to receive(:sleep) expect(Slack::RealTime::Client).to receive(:new).twice.and_return(client) expect(logger).to receive(:error).twice end it 'migration_in_progress', vcr: { cassette_name: 'migration_in_progress' } do expect do subject.send :start! end.to raise_error Slack::Web::Api::Error, 'unknown' end [Faraday::Error::ConnectionFailed, Faraday::Error::TimeoutError, Faraday::Error::SSLError].each do |err| it "#{err}" do expect(client).to receive(:start!) { fail err, 'Faraday' } expect(client).to receive(:start!) { fail 'unknown' } expect do subject.send :start! end.to raise_error 'unknown' end end end end