diff --git a/spec/support/helpers/stub_saas_features.rb b/spec/support/helpers/stub_saas_features.rb index d0aa7108a6a266652409cf244cf882fecd079062..82ad6e59cb441776e40b704732ddc001f4dbbd65 100644 --- a/spec/support/helpers/stub_saas_features.rb +++ b/spec/support/helpers/stub_saas_features.rb @@ -11,7 +11,10 @@ module StubSaasFeatures # - `stub_saas_features(onboarding: true)` ... Enable `onboarding` # SaaS feature globally. def stub_saas_features(features) - features.each do |feature_name, value| + all_features = ::Gitlab::Saas::FEATURES.index_with { false } + all_features.merge!(features) + + all_features.each do |feature_name, value| raise ArgumentError, 'value must be boolean' unless value.in? [true, false] allow(::Gitlab::Saas).to receive(:feature_available?).with(feature_name).and_return(value) diff --git a/spec/support_specs/helpers/stub_saas_features_spec.rb b/spec/support_specs/helpers/stub_saas_features_spec.rb index c3cec3f47aaefdfe3043bcbabf9cb25c6fd18e6f..db608c774c0ca65867d6e6cb6062943b8357a64f 100644 --- a/spec/support_specs/helpers/stub_saas_features_spec.rb +++ b/spec/support_specs/helpers/stub_saas_features_spec.rb @@ -6,7 +6,12 @@ describe '#stub_saas_features' do using RSpec::Parameterized::TableSyntax - let(:feature_name) { :some_saas_feature } + let(:feature_name) { :feature_one } + let(:all_features) { [feature_name, :feature_two, :feature_three] } + + before do + stub_const("Gitlab::Saas::FEATURES", all_features) + end context 'when checking global state' do where(:feature_value) do @@ -46,5 +51,15 @@ expect(::Gitlab::Saas.feature_available?(feature_name)).to eq(false) expect(::Gitlab::Saas.feature_available?(:some_new_feature)).to eq(true) end + + context 'when checking multiple features' do + it 'stubs defaults false value for other known features' do + stub_saas_features(feature_one: true) + + expect(::Gitlab::Saas.feature_available?(:feature_one)).to eq(true) + expect(::Gitlab::Saas.feature_available?(:feature_two)).to eq(false) + expect(::Gitlab::Saas.feature_available?(:feature_three)).to eq(false) + end + end end end