* Move some tests of User into Settings::ScopedSettings * Add a test for User@settingsmaster
@@ -73,6 +73,10 @@ class User < ApplicationRecord | |||||
has_many :session_activations, dependent: :destroy | has_many :session_activations, dependent: :destroy | ||||
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal, | |||||
:reduce_motion, :system_font_ui, :noindex, :theme, | |||||
to: :settings, prefix: :setting, allow_nil: false | |||||
def confirmed? | def confirmed? | ||||
confirmed_at.present? | confirmed_at.present? | ||||
end | end | ||||
@@ -136,42 +140,6 @@ class User < ApplicationRecord | |||||
settings.default_privacy || (account.locked? ? 'private' : 'public') | settings.default_privacy || (account.locked? ? 'private' : 'public') | ||||
end | end | ||||
def setting_default_sensitive | |||||
settings.default_sensitive | |||||
end | |||||
def setting_unfollow_modal | |||||
settings.unfollow_modal | |||||
end | |||||
def setting_boost_modal | |||||
settings.boost_modal | |||||
end | |||||
def setting_delete_modal | |||||
settings.delete_modal | |||||
end | |||||
def setting_auto_play_gif | |||||
settings.auto_play_gif | |||||
end | |||||
def setting_reduce_motion | |||||
settings.reduce_motion | |||||
end | |||||
def setting_system_font_ui | |||||
settings.system_font_ui | |||||
end | |||||
def setting_noindex | |||||
settings.noindex | |||||
end | |||||
def setting_theme | |||||
settings.theme | |||||
end | |||||
def token_for_app(a) | def token_for_app(a) | ||||
return nil if a.nil? || a.owner != self | return nil if a.nil? || a.owner != self | ||||
Doorkeeper::AccessToken | Doorkeeper::AccessToken | ||||
@@ -0,0 +1,35 @@ | |||||
# 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 |
@@ -177,27 +177,10 @@ RSpec.describe User, type: :model do | |||||
end | end | ||||
end | end | ||||
describe '#setting_auto_play_gif' do | |||||
it 'returns auto-play gif setting' do | |||||
describe 'settings' do | |||||
it 'is instance of Settings::ScopedSettings' do | |||||
user = Fabricate(:user) | user = Fabricate(:user) | ||||
user.settings[:auto_play_gif] = false | |||||
expect(user.setting_auto_play_gif).to eq false | |||||
end | |||||
end | |||||
describe '#setting_system_font_ui' do | |||||
it 'returns system font ui setting' do | |||||
user = Fabricate(:user) | |||||
user.settings[:system_font_ui] = false | |||||
expect(user.setting_system_font_ui).to eq false | |||||
end | |||||
end | |||||
describe '#setting_boost_modal' do | |||||
it 'returns boost modal setting' do | |||||
user = Fabricate(:user) | |||||
user.settings[:boost_modal] = false | |||||
expect(user.setting_boost_modal).to eq false | |||||
expect(user.settings).to be_kind_of Settings::ScopedSettings | |||||
end | end | ||||
end | end | ||||
@@ -219,22 +202,6 @@ RSpec.describe User, type: :model do | |||||
end | end | ||||
end | end | ||||
describe '#setting_unfollow_modal' do | |||||
it 'returns unfollow modal setting' do | |||||
user = Fabricate(:user) | |||||
user.settings[:unfollow_modal] = true | |||||
expect(user.setting_unfollow_modal).to eq true | |||||
end | |||||
end | |||||
describe '#setting_delete_modal' do | |||||
it 'returns delete modal setting' do | |||||
user = Fabricate(:user) | |||||
user.settings[:delete_modal] = false | |||||
expect(user.setting_delete_modal).to eq false | |||||
end | |||||
end | |||||
describe 'whitelist' do | describe 'whitelist' do | ||||
around(:each) do |example| | around(:each) do |example| | ||||
old_whitelist = Rails.configuration.x.email_whitelist | old_whitelist = Rails.configuration.x.email_whitelist | ||||