diff options
author | Stan Hu <stanhu@gmail.com> | 2019-07-12 21:40:43 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2019-07-12 21:40:43 -0700 |
commit | affe8baab2cbaf45478c5d0ba0554a5605ab6f3a (patch) | |
tree | fdff1c60d90246068132012316ff7e11ef64fe78 /spec/lib/feature_spec.rb | |
parent | 0caa793c2e0c0707ee1a5f0193045efb2d7b3a4d (diff) | |
download | gitlab-ce-sh-fix-feature-flags.tar.gz |
Fix handling of default_enabledsh-fix-feature-flags
Diffstat (limited to 'spec/lib/feature_spec.rb')
-rw-r--r-- | spec/lib/feature_spec.rb | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/spec/lib/feature_spec.rb b/spec/lib/feature_spec.rb index bf92a03b898..0271b8e38b8 100644 --- a/spec/lib/feature_spec.rb +++ b/spec/lib/feature_spec.rb @@ -167,6 +167,7 @@ describe Feature do described_class.enable(:enabled_feature_flag) flipper_key = "flipper/v1/feature/enabled_feature_flag" + expect(described_class.l1_cache_backend).to receive(:fetch).with('flipper:persisted_names', expires_in: 1.minute).and_call_original expect(described_class.l2_cache_backend) .to receive(:fetch) .once @@ -184,11 +185,33 @@ describe Feature do end end + context 'with actor', :request_store do + let(:flag) { :actor_flag } + let(:actor) { create(:project) } + + it 'persisted feature prioritizes gate state over default_enabled' do + described_class.enable(flag, actor) + + expect(described_class.enabled?(flag, actor, default_enabled: true)).to be_truthy + expect(described_class.enabled?(flag, actor, default_enabled: false)).to be_truthy + expect(described_class.enabled?(flag, default_enabled: true)).to be_truthy + expect(described_class.enabled?(flag, default_enabled: false)).to be_falsey + end + + it 'unpersisted feature respects default_enabled' do + expect(described_class.enabled?(flag, actor, default_enabled: true)).to be_truthy + expect(described_class.enabled?(flag, actor, default_enabled: false)).to be_falsey + expect(described_class.enabled?(flag, default_enabled: true)).to be_truthy + expect(described_class.enabled?(flag, default_enabled: false)).to be_falsey + end + end + context 'cached feature flag', :request_store do let(:flag) { :some_feature_flag } before do described_class.flipper.memoize = false + described_class.enable(flag) described_class.enabled?(flag) end @@ -206,7 +229,7 @@ describe Feature do expect(described_class.l1_cache_backend).to receive(:fetch).once.and_call_original expect(described_class.l2_cache_backend).to receive(:fetch).once.and_call_original expect(described_class.enabled?(flag)).to be_truthy - end.not_to exceed_query_limit(0) + end.not_to exceed_query_limit(1) # One query for persisted_names end end |