0
0
Fork 0

Change user settings to be stored in a more optimal way (#23630)

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
Eugen Rochko 2023-03-30 14:44:00 +02:00 committed by GitHub
parent e7c3e55874
commit a9b5598c97
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 817 additions and 525 deletions

View file

@ -1,16 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Settings::Extend do
class User
include Settings::Extend
end
describe '#settings' do
it 'sets @settings as an instance of Settings::ScopedSettings' do
user = Fabricate(:user)
expect(user.settings).to be_a Settings::ScopedSettings
end
end
end

View file

@ -1,35 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Settings::ScopedSettings do
let(:object) { Fabricate(:user) }
let(:scoped_setting) { described_class.new(object) }
let(:val) { 'whatever' }
let(:methods) { %i(auto_play_gif default_sensitive unfollow_modal boost_modal delete_modal reduce_motion system_font_ui noindex theme) }
describe '.initialize' do
it 'sets @object' do
scoped_setting = described_class.new(object)
expect(scoped_setting.instance_variable_get(:@object)).to be object
end
end
describe '#method_missing' do
it 'sets scoped_setting.method_name = val' do
methods.each do |key|
scoped_setting.send("#{key}=", val)
expect(scoped_setting.send(key)).to eq val
end
end
end
describe '#[]= and #[]' do
it 'sets [key] = val' do
methods.each do |key|
scoped_setting[key] = val
expect(scoped_setting[key]).to eq val
end
end
end
end

View file

@ -1,84 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
describe UserSettingsDecorator do
describe 'update' do
let(:user) { Fabricate(:user) }
let(:settings) { described_class.new(user) }
it 'updates the user settings value for email notifications' do
values = { 'notification_emails' => { 'follow' => '1' } }
settings.update(values)
expect(user.settings['notification_emails']['follow']).to be true
end
it 'updates the user settings value for interactions' do
values = { 'interactions' => { 'must_be_follower' => '0' } }
settings.update(values)
expect(user.settings['interactions']['must_be_follower']).to be false
end
it 'updates the user settings value for privacy' do
values = { 'setting_default_privacy' => 'public' }
settings.update(values)
expect(user.settings['default_privacy']).to eq 'public'
end
it 'updates the user settings value for sensitive' do
values = { 'setting_default_sensitive' => '1' }
settings.update(values)
expect(user.settings['default_sensitive']).to be true
end
it 'updates the user settings value for unfollow modal' do
values = { 'setting_unfollow_modal' => '0' }
settings.update(values)
expect(user.settings['unfollow_modal']).to be false
end
it 'updates the user settings value for boost modal' do
values = { 'setting_boost_modal' => '1' }
settings.update(values)
expect(user.settings['boost_modal']).to be true
end
it 'updates the user settings value for delete toot modal' do
values = { 'setting_delete_modal' => '0' }
settings.update(values)
expect(user.settings['delete_modal']).to be false
end
it 'updates the user settings value for gif auto play' do
values = { 'setting_auto_play_gif' => '0' }
settings.update(values)
expect(user.settings['auto_play_gif']).to be false
end
it 'updates the user settings value for system font in UI' do
values = { 'setting_system_font_ui' => '0' }
settings.update(values)
expect(user.settings['system_font_ui']).to be false
end
it 'decoerces setting values before applying' do
values = {
'setting_delete_modal' => 'false',
'setting_boost_modal' => 'true',
}
settings.update(values)
expect(user.settings['delete_modal']).to be false
expect(user.settings['boost_modal']).to be true
end
end
end