From 7a0912d5a44214403f54395374b1ff734cbc9732 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 6 Apr 2021 15:59:15 +1000 Subject: [PATCH] Use Flipper within the OFN FeatureToggle interface This ensures that we keep the same interface as before and can migrate to Flipper in a backwards-compatible way. --- lib/open_food_network/feature_toggle.rb | 8 ++++++-- spec/lib/open_food_network/feature_toggle_spec.rb | 11 +++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/open_food_network/feature_toggle.rb b/lib/open_food_network/feature_toggle.rb index b3c5b5a2ae..50fb761b6e 100644 --- a/lib/open_food_network/feature_toggle.rb +++ b/lib/open_food_network/feature_toggle.rb @@ -40,8 +40,12 @@ module OpenFoodNetwork end def enabled?(feature_name, user) - feature = features.fetch(feature_name, DefaultFeature.new(feature_name)) - feature.enabled?(user) + if Flipper[feature_name].exist? + Flipper.enabled?(feature_name, user) + else + feature = features.fetch(feature_name, DefaultFeature.new(feature_name)) + feature.enabled?(user) + end end private diff --git a/spec/lib/open_food_network/feature_toggle_spec.rb b/spec/lib/open_food_network/feature_toggle_spec.rb index 3e5e3cfa4f..60f23933cf 100644 --- a/spec/lib/open_food_network/feature_toggle_spec.rb +++ b/spec/lib/open_food_network/feature_toggle_spec.rb @@ -24,6 +24,17 @@ module OpenFoodNetwork expect(FeatureToggle.enabled?(:foo)).to be false end + it "uses Flipper configuration" do + Flipper.enable(:foo) + expect(FeatureToggle.enabled?(:foo)).to be true + end + + it "uses Flipper over static config" do + Flipper.enable(:foo, false) + stub_foo("true") + expect(FeatureToggle.enabled?(:foo)).to be false + end + def stub_foo(value) allow(ENV).to receive(:fetch).with("OFN_FEATURE_FOO", nil).and_return(value) end