gitlab-ce/gems/gitlab-active-context/spec/lib/active_context/queues_spec.rb

46 lines
1.6 KiB
Ruby

# frozen_string_literal: true
RSpec.describe ActiveContext::Queues do
before do
described_class.instance_variable_set(:@queues, nil)
described_class.instance_variable_set(:@raw_queues, nil)
end
describe '.register!' do
it 'adds the queue key to queues set' do
described_class.register!('test_queue', shards: 1)
expect(described_class.queues).to include('test_queue')
end
it 'creates sharded queue names in raw_queues' do
described_class.register!('test_queue', shards: 3)
expected_raw_queues = ['test_queue:0', 'test_queue:1', 'test_queue:2']
expect(described_class.raw_queues).to eq(expected_raw_queues)
end
it 'handles multiple queue registrations' do
described_class.register!('queue1', shards: 2)
described_class.register!('queue2', shards: 1)
expect(described_class.queues).to eq(Set.new(%w[queue1 queue2]))
expect(described_class.raw_queues).to eq(['queue1:0', 'queue1:1', 'queue2:0'])
end
it 'raises an error when register is called for the same key multiple times' do
described_class.register!('test_queue', shards: 2)
expect(described_class.queues).to eq(Set.new(['test_queue']))
expect(described_class.raw_queues).to eq(['test_queue:0', 'test_queue:1'])
expect { described_class.register!('test_queue', shards: 1) }.to raise_error(ArgumentError)
end
it 'appends new sharded queues to existing raw_queues' do
described_class.register!('queue1', shards: 1)
described_class.register!('queue2', shards: 2)
expect(described_class.raw_queues).to eq(['queue1:0', 'queue2:0', 'queue2:1'])
end
end
end