diff options
author | Reverite <github@reverite.sh> | 2019-07-07 16:25:42 -0700 |
---|---|---|
committer | Reverite <github@reverite.sh> | 2019-07-07 16:25:42 -0700 |
commit | 7d99f12fd03cf2f861d0747c3bbcd4a8cf454d99 (patch) | |
tree | 7b166c33fefb4bf3cc6f6dee46f5883f7428d80a /spec/lib/connection_pool/shared_timed_stack_spec.rb | |
parent | 100bb17b1317f07c0eaa89da869f960b6cff611f (diff) | |
parent | fce885f271f8651702d606406e21677280071e40 (diff) |
Merge branch 'glitch' into production
Diffstat (limited to 'spec/lib/connection_pool/shared_timed_stack_spec.rb')
-rw-r--r-- | spec/lib/connection_pool/shared_timed_stack_spec.rb | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/spec/lib/connection_pool/shared_timed_stack_spec.rb b/spec/lib/connection_pool/shared_timed_stack_spec.rb new file mode 100644 index 000000000..f680c5966 --- /dev/null +++ b/spec/lib/connection_pool/shared_timed_stack_spec.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ConnectionPool::SharedTimedStack do + class MiniConnection + attr_reader :site + + def initialize(site) + @site = site + end + end + + subject { described_class.new(5) { |site| MiniConnection.new(site) } } + + describe '#push' do + it 'keeps the connection in the stack' do + subject.push(MiniConnection.new('foo')) + expect(subject.size).to eq 1 + end + end + + describe '#pop' do + it 'returns a connection' do + expect(subject.pop('foo')).to be_a MiniConnection + end + + it 'returns the same connection that was pushed in' do + connection = MiniConnection.new('foo') + subject.push(connection) + expect(subject.pop('foo')).to be connection + end + + it 'does not create more than maximum amount of connections' do + expect { 6.times { subject.pop('foo', 0) } }.to raise_error Timeout::Error + end + + it 'repurposes a connection for a different site when maximum amount is reached' do + 5.times { subject.push(MiniConnection.new('foo')) } + expect(subject.pop('bar')).to be_a MiniConnection + end + end + + describe '#empty?' do + it 'returns true when no connections on the stack' do + expect(subject.empty?).to be true + end + + it 'returns false when there are connections on the stack' do + subject.push(MiniConnection.new('foo')) + expect(subject.empty?).to be false + end + end + + describe '#size' do + it 'returns the number of connections on the stack' do + 2.times { subject.push(MiniConnection.new('foo')) } + expect(subject.size).to eq 2 + end + end +end |