spec/adapter_spec.rb in sidekiq-bus-0.8.0 vs spec/adapter_spec.rb in sidekiq-bus-0.8.1
- old
+ new
@@ -13,21 +13,36 @@
it 'should be defaulting to Data from spec_helper' do
expect(QueueBus.adapter.is_a?(adapter_under_test_class)).to eq(true)
end
describe '.setup_heartbeat!' do
- context 'when already setup' do
- before { QueueBus.heartbeat! }
+ let(:config) { spy('Sidekiq') }
- it 'does not change schedule' do
- expect { QueueBus.heartbeat! }
- .not_to(change { Sidekiq.get_schedule('sidekiqbus_heartbeat') })
+ around do |example|
+ begin
+ old = Sidekiq.options[:lifecycle_events][:startup]
+ Sidekiq.options[:lifecycle_events][:startup] = []
+ example.run
+ ensure
+ Sidekiq.options[:lifecycle_events][:startup] = old
end
+ end
+ before do
+ # This configuration must think it's running on the server.
+ allow(Sidekiq).to receive(:server?).and_return(true)
+
+ # Turn on heartbeats
+ QueueBus.heartbeat!
+
+ # Need to have the schedule loaded before we load anything new
+ Sidekiq::Scheduler.instance.load_schedule!
+ end
+
+ shared_examples 'a scheduled heartbeat' do
it 'has the schedule for every minute' do
- expect(Sidekiq.get_schedule('sidekiqbus_heartbeat')['every'])
- .to eq '1min'
+ expect(Sidekiq.get_schedule('sidekiqbus_heartbeat')['every']).to eq '1min'
end
it 'has scheduled the queue bus worker' do
expect(Sidekiq.get_schedule('sidekiqbus_heartbeat')['class'])
.to eq ::QueueBus::Worker.name
@@ -42,13 +57,28 @@
expect(Sidekiq.get_schedule('sidekiqbus_heartbeat')['queue'])
.to eq 'bus_incoming'
end
end
- context 'when it does not exist' do
- it 'sets the schedule' do
- expect { QueueBus.heartbeat! }
- .to(change { Sidekiq.get_schedule('sidekiqbus_heartbeat') })
+ context 'when dynamic' do
+ before do
+ allow(Sidekiq::Scheduler.instance).to receive(:dynamic).and_return(true)
+
+ # Simulate running startup events
+ Sidekiq.options[:lifecycle_events][:startup].each(&:call)
end
+
+ it_behaves_like 'a scheduled heartbeat'
+ end
+
+ context 'when non-dynamic' do
+ before do
+ allow(Sidekiq::Scheduler.instance).to receive(:dynamic).and_return(false)
+
+ # Simulate running startup events
+ Sidekiq.options[:lifecycle_events][:startup].each(&:call)
+ end
+
+ it_behaves_like 'a scheduled heartbeat'
end
end
end