diff options
Diffstat (limited to 'spec/lib/gitlab/usage/metrics/instrumentations/generic_metric_spec.rb')
-rw-r--r-- | spec/lib/gitlab/usage/metrics/instrumentations/generic_metric_spec.rb | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/generic_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/generic_metric_spec.rb new file mode 100644 index 00000000000..158be34d39c --- /dev/null +++ b/spec/lib/gitlab/usage/metrics/instrumentations/generic_metric_spec.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::Usage::Metrics::Instrumentations::GenericMetric do + shared_examples 'custom fallback' do |custom_fallback| + subject do + Class.new(described_class) do + fallback(custom_fallback) + value { Gitlab::Database.main.version } + end.new(time_frame: 'none') + end + + describe '#value' do + it 'gives the correct value' do + expect(subject.value).to eq(Gitlab::Database.main.version) + end + + context 'when raising an exception' do + it 'return the custom fallback' do + expect(Gitlab::Database.main).to receive(:version).and_raise('Error') + expect(subject.value).to eq(custom_fallback) + end + end + end + end + + context 'with default fallback' do + subject do + Class.new(described_class) do + value { Gitlab::Database.main.version } + end.new(time_frame: 'none') + end + + describe '#value' do + it 'gives the correct value' do + expect(subject.value).to eq(Gitlab::Database.main.version ) + end + + context 'when raising an exception' do + it 'return the default fallback' do + expect(Gitlab::Database.main).to receive(:version).and_raise('Error') + expect(subject.value).to eq(described_class::FALLBACK) + end + end + end + end + + context 'with custom fallback -2' do + it_behaves_like 'custom fallback', -2 + end + + context 'with custom fallback nil' do + it_behaves_like 'custom fallback', nil + end + + context 'with custom fallback false' do + it_behaves_like 'custom fallback', false + end + + context 'with custom fallback true' do + it_behaves_like 'custom fallback', true + end + + context 'with custom fallback []' do + it_behaves_like 'custom fallback', [] + end + + context 'with custom fallback { major: -1 }' do + it_behaves_like 'custom fallback', { major: -1 } + end +end |