diff options
Diffstat (limited to 'spec/lib/gitlab/experimentation/experiment_spec.rb')
-rw-r--r-- | spec/lib/gitlab/experimentation/experiment_spec.rb | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/spec/lib/gitlab/experimentation/experiment_spec.rb b/spec/lib/gitlab/experimentation/experiment_spec.rb new file mode 100644 index 00000000000..4af76e9e920 --- /dev/null +++ b/spec/lib/gitlab/experimentation/experiment_spec.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::Experimentation::Experiment do + using RSpec::Parameterized::TableSyntax + + let(:percentage) { 50 } + let(:params) do + { + tracking_category: 'Category1', + use_backwards_compatible_subject_index: true + } + end + + before do + feature = double('FeatureFlag', percentage_of_time_value: percentage ) + expect(Feature).to receive(:get).with(:experiment_key_experiment_percentage).and_return(feature) + end + + subject(:experiment) { described_class.new(:experiment_key, **params) } + + describe '#enabled?' do + before do + allow(Gitlab).to receive(:dev_env_or_com?).and_return(on_gitlab_com) + end + + subject { experiment.enabled? } + + where(:on_gitlab_com, :percentage, :is_enabled) do + true | 0 | false + true | 10 | true + false | 0 | false + false | 10 | false + end + + with_them do + it { is_expected.to eq(is_enabled) } + end + end + + describe '#enabled_for_index?' do + subject { experiment.enabled_for_index?(index) } + + where(:index, :percentage, :is_enabled) do + 50 | 40 | false + 40 | 50 | true + nil | 50 | false + end + + with_them do + it { is_expected.to eq(is_enabled) } + end + end +end |