From a91e505051742b967a5d8e3ff141d1ee27068e0f Mon Sep 17 00:00:00 2001 From: Michael Kohl Date: Fri, 11 Feb 2022 13:38:17 +0700 Subject: [PATCH] Add FeatureFlag.all (#16496) --- app/services/feature_flag.rb | 8 ++++++++ spec/services/feature_flag_spec.rb | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/app/services/feature_flag.rb b/app/services/feature_flag.rb index 0b0826b27..7aff2bc26 100644 --- a/app/services/feature_flag.rb +++ b/app/services/feature_flag.rb @@ -44,5 +44,13 @@ module FeatureFlag enabled?(feature_flag_name, *args) end + + # Retrieve a list of all currently defined flags and their status. This is + # primarily intended for development and wraps +Flipper.features+. + # + # @return [Hash] the defined flags with their status (+:on+ or +:off+). + def all + Flipper.features.to_h { |feature| [feature.name.to_sym, feature.state] } + end end end diff --git a/spec/services/feature_flag_spec.rb b/spec/services/feature_flag_spec.rb index 7ca000fca..2e207a2f8 100644 --- a/spec/services/feature_flag_spec.rb +++ b/spec/services/feature_flag_spec.rb @@ -99,4 +99,14 @@ describe FeatureFlag, type: :service do end end end + + describe ".all", :aggregate_failures do + it "returns a hash with all feature flags and their status" do + described_class.enable(:flag1) + expect(described_class.all).to eq({ flag1: :on }) + + described_class.disable(:flag2) + expect(described_class.all).to eq({ flag1: :on, flag2: :off }) + end + end end