From 332dc0aa60aed14ecbf54d4e1595eddbed4c77fa Mon Sep 17 00:00:00 2001 From: Vijay Hawoldar <vhawoldar@gitlab.com> Date: Thu, 9 Nov 2023 13:46:08 +0000 Subject: [PATCH] Adjusts stub_saas_features to stub defaults So that we can test flows that result in multiple calls to Gitlab::Saas.feature_available?, we now stub the default value for all known SaaS features to false --- spec/support/helpers/stub_saas_features.rb | 5 ++++- .../helpers/stub_saas_features_spec.rb | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/spec/support/helpers/stub_saas_features.rb b/spec/support/helpers/stub_saas_features.rb index d0aa7108a6a2..82ad6e59cb44 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 c3cec3f47aae..db608c774c0c 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 -- GitLab