diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-05 18:07:52 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-05 18:07:52 +0300 |
commit | afe2b984524ae4b0c8a0636db7ec5b2c452f0734 (patch) | |
tree | 3de39f954c7239e09a9afe84263a64e7042b2b60 /spec/lib/gitlab/database/connection_timer_spec.rb | |
parent | 5a6b36b60502c50ab59c0bc3c345793b70a3d548 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/gitlab/database/connection_timer_spec.rb')
-rw-r--r-- | spec/lib/gitlab/database/connection_timer_spec.rb | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/spec/lib/gitlab/database/connection_timer_spec.rb b/spec/lib/gitlab/database/connection_timer_spec.rb new file mode 100644 index 00000000000..c9e9d770343 --- /dev/null +++ b/spec/lib/gitlab/database/connection_timer_spec.rb @@ -0,0 +1,100 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::Database::ConnectionTimer do + let(:current_clock_value) { 1234.56 } + + before do + allow(described_class).to receive(:current_clock_value).and_return(current_clock_value) + end + + describe '.starting_now' do + let(:default_interval) { described_class::DEFAULT_INTERVAL } + let(:random_value) { 120 } + + before do + allow(described_class).to receive(:rand).and_return(random_value) + end + + context 'when the configured interval is positive' do + before do + allow(described_class).to receive(:interval).and_return(default_interval) + end + + it 'randomizes the interval of the created timer' do + timer = described_class.starting_now + + expect(timer.interval).to eq(default_interval + random_value) + end + end + + context 'when the configured interval is not positive' do + before do + allow(described_class).to receive(:interval).and_return(0) + end + + it 'sets the interval of the created timer to nil' do + timer = described_class.starting_now + + expect(timer.interval).to be_nil + end + end + end + + describe '.expired?' do + context 'when the interval is positive' do + context 'when the interval has elapsed' do + it 'returns true' do + timer = described_class.new(20, current_clock_value - 30) + + expect(timer).to be_expired + end + end + + context 'when the interval has not elapsed' do + it 'returns false' do + timer = described_class.new(20, current_clock_value - 10) + + expect(timer).not_to be_expired + end + end + end + + context 'when the interval is not positive' do + context 'when the interval has elapsed' do + it 'returns false' do + timer = described_class.new(0, current_clock_value - 30) + + expect(timer).not_to be_expired + end + end + + context 'when the interval has not elapsed' do + it 'returns false' do + timer = described_class.new(0, current_clock_value + 10) + + expect(timer).not_to be_expired + end + end + end + + context 'when the interval is nil' do + it 'returns false' do + timer = described_class.new(nil, current_clock_value - 30) + + expect(timer).not_to be_expired + end + end + end + + describe '.reset!' do + it 'updates the timer clock value' do + timer = described_class.new(20, current_clock_value - 20) + expect(timer.starting_clock_value).not_to eql(current_clock_value) + + timer.reset! + expect(timer.starting_clock_value).to eql(current_clock_value) + end + end +end |