Files
openfoodnetwork/spec/initializers/feature_toggles_spec.rb
Pau Perez 655fe887f9 Distinguish user not present and list empty
This is a bit more thorough.
2021-02-04 13:19:04 +01:00

66 lines
1.7 KiB
Ruby

require 'spec_helper'
describe 'config/initializers/feature_toggles.rb' do
# Executes the initializer's code block by reading the Ruby file. Note that `Kernel#require` would
# prevent this from happening twice.
subject(:execute_initializer) do
load Rails.root.join('config/initializers/feature_toggles.rb')
end
let(:user) { build(:user) }
around do |example|
original = ENV['BETA_TESTERS']
example.run
ENV['BETA_TESTERS'] = original
end
context 'when beta_testers is ["all"]' do
before { ENV['BETA_TESTERS'] = 'all' }
it 'returns true' do
execute_initializer
enabled = OpenFoodNetwork::FeatureToggle.enabled?(:customer_balance, user)
expect(enabled).to eq(true)
end
end
context 'when beta_testers is a list of emails' do
let(:other_user) { build(:user) }
context 'and the user is in the list' do
before { ENV['BETA_TESTERS'] = "#{user.email}, #{other_user.email}" }
it 'enables the feature' do
execute_initializer
enabled = OpenFoodNetwork::FeatureToggle.enabled?(:customer_balance, user)
expect(enabled).to eq(true)
end
end
context 'and the user is not in the list' do
before { ENV['BETA_TESTERS'] = "#{other_user.email}" }
it 'disables the feature' do
execute_initializer
enabled = OpenFoodNetwork::FeatureToggle.enabled?(:customer_balance, user)
expect(enabled).to eq(false)
end
end
context 'and the list is empty' do
before { ENV['BETA_TESTERS'] = '' }
it 'disables the feature' do
execute_initializer
enabled = OpenFoodNetwork::FeatureToggle.enabled?(:customer_balance, user)
expect(enabled).to eq(false)
end
end
end
end