From ea0558c70e11f031baa4f67dc3cc9c79dc33e127 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 23 Apr 2024 15:02:45 +1000 Subject: [PATCH] Replace Flipper's built-in test helper It fails in CI and features are not seen as enabled. So we copy the important part of the test helper into our code, which works. It's probably about the point in time when the adapter is instantiated. --- config/initializers/flipper.rb | 17 ++++++++++++++++- spec/base_spec_helper.rb | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/config/initializers/flipper.rb b/config/initializers/flipper.rb index 4a4aecaf25..446ac3ee70 100644 --- a/config/initializers/flipper.rb +++ b/config/initializers/flipper.rb @@ -2,8 +2,23 @@ require "flipper" require "flipper/adapters/active_record" require "open_food_network/feature_toggle" -Flipper.register(:admins) { |actor| actor.respond_to?(:admin?) && actor.admin? } +Rails.application.configure do + # Disable Flipper's built-in test helper. + # It fails in CI and feature don't get activated. + config.flipper.test_help = false +end +Flipper.configure do |flipper| + # Still use recommended test setup with faster memory adapter: + if Rails.env.test? + # Use a shared Memory adapter for all tests. The adapter is instantiated + # outside of the block so the same instance is returned in new threads. + adapter = Flipper::Adapters::Memory.new + flipper.adapter { adapter } + end +end + +Flipper.register(:admins) { |actor| actor.respond_to?(:admin?) && actor.admin? } Flipper::UI.configure do |config| config.descriptions_source = ->(_keys) do # return has to be hash of {String key => String description} diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 1238281f00..42ce4e6ad6 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -102,7 +102,7 @@ RSpec.configure do |config| end # Reset all feature toggles to prevent leaking. - config.before(:suite) do + config.before(:each) do Flipper.features.each(&:remove) OpenFoodNetwork::FeatureToggle.setup! end