scoped_settings.rb (2053B)
- # frozen_string_literal: true
- shared_examples 'ScopedSettings' do
- describe '[]' do
- it 'inherits default settings' do
- expect(Setting.boost_modal).to eq false
- expect(Setting.interactions['must_be_follower']).to eq false
- settings = create!
- expect(settings['boost_modal']).to eq false
- expect(settings['interactions']['must_be_follower']).to eq false
- end
- end
- describe 'all_as_records' do
- # expecting [] and []= works
- it 'returns records merged with default values except hashes' do
- expect(Setting.boost_modal).to eq false
- expect(Setting.delete_modal).to eq true
- settings = create!
- settings['boost_modal'] = true
- records = settings.all_as_records
- expect(records['boost_modal'].value).to eq true
- expect(records['delete_modal'].value).to eq true
- end
- end
- describe 'missing methods' do
- # expecting [] and []= works.
- it 'reads settings' do
- expect(Setting.boost_modal).to eq false
- settings = create!
- expect(settings.boost_modal).to eq false
- end
- it 'updates settings' do
- settings = fabricate
- settings.boost_modal = true
- expect(settings['boost_modal']).to eq true
- end
- end
- it 'can update settings with [] and can read with []=' do
- settings = fabricate
- settings['boost_modal'] = true
- settings['interactions'] = settings['interactions'].merge('must_be_follower' => true)
- Setting.save!
- expect(settings['boost_modal']).to eq true
- expect(settings['interactions']['must_be_follower']).to eq true
- Rails.cache.clear
- expect(settings['boost_modal']).to eq true
- expect(settings['interactions']['must_be_follower']).to eq true
- end
- xit 'does not mutate defaults via the cache' do
- fabricate['interactions']['must_be_follower'] = true
- # TODO
- # This mutates the global settings default such that future
- # instances will inherit the incorrect starting values
- expect(fabricate.settings['interactions']['must_be_follower']).to eq false
- end
- end