diff --git a/.rubocop.yml b/.rubocop.yml index df00f95..b8c12ef 100755 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -25,7 +25,7 @@ RSpec/MultipleExpectations: RSpec/ExampleLength: Enabled: false -Rspec/MultipleMemoizedHelpers: +RSpec/MultipleMemoizedHelpers: Enabled: false RSpec/MessageSpies: diff --git a/lib/lepus/supervisor.rb b/lib/lepus/supervisor.rb index 2d2c6a4..6f3161c 100644 --- a/lib/lepus/supervisor.rb +++ b/lib/lepus/supervisor.rb @@ -57,6 +57,7 @@ def boot end setup_consumers + check_bunny_connection run_process_callbacks(:boot) do sync_std_streams @@ -72,6 +73,11 @@ def setup_consumers end end + def check_bunny_connection + temp_bunny = Lepus.config.create_connection(suffix: "(boot-check)") + temp_bunny.close + end + def start_processes configuration.configured_processes.each { |configured_process| start_process(configured_process) } end diff --git a/spec/lepus/supervisor_spec.rb b/spec/lepus/supervisor_spec.rb new file mode 100644 index 0000000..c04b116 --- /dev/null +++ b/spec/lepus/supervisor_spec.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +require "spec_helper" + +RSpec.describe Lepus::Supervisor do + after do + Lepus::ProcessRegistry.instance.clear + end + + # rubocop:disable RSpec/AnyInstance + describe "#check_bunny_connection" do + subject(:conn_test) { supervisor.send(:check_bunny_connection) } + + let(:config) { Lepus::Supervisor::Config.new(consumers: %w[TestConsumer]) } + let(:supervisor) { described_class.new(config) } + + context "when the connection is successful" do + before do + allow_any_instance_of(Bunny::Session).to receive(:start).and_return(:ok) + end + + it "does not raise an error" do + expect { conn_test }.not_to raise_error + end + end + + context "when the connection is not successful" do + before do + allow_any_instance_of(Bunny::Session).to receive(:start).and_raise(Bunny::Exception) + end + + it "raises an error" do + expect { conn_test }.to raise_error(Bunny::Exception) + end + end + end + # rubocop:enable RSpec/AnyInstance +end