diff --git a/config/initializers/flipper.rb b/config/initializers/flipper.rb index 446ac3ee70..77dbce2de3 100644 --- a/config/initializers/flipper.rb +++ b/config/initializers/flipper.rb @@ -18,7 +18,14 @@ Flipper.configure do |flipper| end end -Flipper.register(:admins) { |actor| actor.respond_to?(:admin?) && actor.admin? } +# Groups +Flipper.register(:admins) do |actor| + actor.respond_to?(:admin?) && actor.admin? +end +Flipper.register(:new_2024_07_03) do |actor| + actor.respond_to?(:created_at?) && actor.created_at >= "2024-07-03".to_time +end + Flipper::UI.configure do |config| config.descriptions_source = ->(_keys) do # return has to be hash of {String key => String description} diff --git a/db/migrate/20240625024328_activate_admin_style_v3_for_new_users.rb b/db/migrate/20240625024328_activate_admin_style_v3_for_new_users.rb new file mode 100644 index 0000000000..55fb41febd --- /dev/null +++ b/db/migrate/20240625024328_activate_admin_style_v3_for_new_users.rb @@ -0,0 +1,5 @@ +class ActivateAdminStyleV3ForNewUsers < ActiveRecord::Migration[7.0] + def up + Flipper.enable_group(:admin_style_v3, :new_2024_07_03) + end +end diff --git a/db/schema.rb b/db/schema.rb index 70feb4b8e7..ba68c5c4b6 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_05_29_081209) do +ActiveRecord::Schema[7.0].define(version: 2024_06_25_024328) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" diff --git a/spec/migrations/20240625024328_activate_admin_style_v3_for_new_users_spec.rb b/spec/migrations/20240625024328_activate_admin_style_v3_for_new_users_spec.rb new file mode 100644 index 0000000000..31bf5d29ab --- /dev/null +++ b/spec/migrations/20240625024328_activate_admin_style_v3_for_new_users_spec.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_relative '../../db/migrate/20240625024328_activate_admin_style_v3_for_new_users' + +RSpec.describe ActivateAdminStyleV3ForNewUsers do + it "activates new product screen for new users" do + Timecop.freeze Time.zone.parse("2024-07-03") do + user_new = create(:user) + + expect { + subject.up + }.to change { + OpenFoodNetwork::FeatureToggle.enabled?(:admin_style_v3, user_new) + }.to(true) + end + end + + it "doesn't activate new product screen for old users" do + Timecop.freeze Time.zone.parse("2024-07-02") do + user_old = create(:user) + + expect { + subject.up + }.not_to change { + OpenFoodNetwork::FeatureToggle.enabled?(:admin_style_v3, user_old) + } + end + end +end