From 31e419e945f8058be58487057bf77c338ca8f536 Mon Sep 17 00:00:00 2001 From: Ash McKenzie Date: Wed, 31 Jul 2019 10:41:11 +1000 Subject: [PATCH] Add new Feature.remove method --- lib/feature.rb | 7 +++++++ spec/lib/feature_spec.rb | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/lib/feature.rb b/lib/feature.rb index e28333aa58e..c70a6980f19 100644 --- a/lib/feature.rb +++ b/lib/feature.rb @@ -80,6 +80,13 @@ class Feature get(key).disable_group(group) end + def remove(key) + feature = get(key) + return unless persisted?(feature) + + feature.remove + end + def flipper if Gitlab::SafeRequestStore.active? Gitlab::SafeRequestStore[:flipper] ||= build_flipper_instance diff --git a/spec/lib/feature_spec.rb b/spec/lib/feature_spec.rb index 185abacf8e7..3d59b1f35a9 100644 --- a/spec/lib/feature_spec.rb +++ b/spec/lib/feature_spec.rb @@ -254,6 +254,22 @@ describe Feature do end end + describe '.remove' do + context 'for a non-persisted feature' do + it 'returns nil' do + expect(described_class.remove(:non_persisted_feature_flag)).to be_nil + end + end + + context 'for a persisted feature' do + it 'returns true' do + described_class.enable(:persisted_feature_flag) + + expect(described_class.remove(:persisted_feature_flag)).to be_truthy + end + end + end + describe Feature::Target do describe '#targets' do let(:project) { create(:project) }