Skip to content
This repository was archived by the owner on May 16, 2019. It is now read-only.

Commit 19e8b86

Browse files
ysksnGargron
authored andcommitted
Delegate some methods of User to @settings (mastodon#5706)
* Move some tests of User into Settings::ScopedSettings * Add a test for User@settings
1 parent 7d7df87 commit 19e8b86

File tree

3 files changed

+42
-72
lines changed

3 files changed

+42
-72
lines changed

app/models/user.rb

+4-36
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ class User < ApplicationRecord
7373

7474
has_many :session_activations, dependent: :destroy
7575

76+
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal,
77+
:reduce_motion, :system_font_ui, :noindex, :theme,
78+
to: :settings, prefix: :setting, allow_nil: false
79+
7680
def confirmed?
7781
confirmed_at.present?
7882
end
@@ -136,42 +140,6 @@ def setting_default_privacy
136140
settings.default_privacy || (account.locked? ? 'private' : 'public')
137141
end
138142

139-
def setting_default_sensitive
140-
settings.default_sensitive
141-
end
142-
143-
def setting_unfollow_modal
144-
settings.unfollow_modal
145-
end
146-
147-
def setting_boost_modal
148-
settings.boost_modal
149-
end
150-
151-
def setting_delete_modal
152-
settings.delete_modal
153-
end
154-
155-
def setting_auto_play_gif
156-
settings.auto_play_gif
157-
end
158-
159-
def setting_reduce_motion
160-
settings.reduce_motion
161-
end
162-
163-
def setting_system_font_ui
164-
settings.system_font_ui
165-
end
166-
167-
def setting_noindex
168-
settings.noindex
169-
end
170-
171-
def setting_theme
172-
settings.theme
173-
end
174-
175143
def token_for_app(a)
176144
return nil if a.nil? || a.owner != self
177145
Doorkeeper::AccessToken
+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# frozen_string_literal: true
2+
3+
require 'rails_helper'
4+
5+
RSpec.describe Settings::ScopedSettings do
6+
let(:object) { Fabricate(:user) }
7+
let(:scoped_setting) { described_class.new(object) }
8+
let(:val) { 'whatever' }
9+
let(:methods) { %i(auto_play_gif default_sensitive unfollow_modal boost_modal delete_modal reduce_motion system_font_ui noindex theme) }
10+
11+
describe '.initialize' do
12+
it 'sets @object' do
13+
scoped_setting = described_class.new(object)
14+
expect(scoped_setting.instance_variable_get(:@object)).to be object
15+
end
16+
end
17+
18+
describe '#method_missing' do
19+
it 'sets scoped_setting.method_name = val' do
20+
methods.each do |key|
21+
scoped_setting.send("#{key}=", val)
22+
expect(scoped_setting.send(key)).to eq val
23+
end
24+
end
25+
end
26+
27+
describe '#[]= and #[]' do
28+
it 'sets [key] = val' do
29+
methods.each do |key|
30+
scoped_setting[key] = val
31+
expect(scoped_setting[key]).to eq val
32+
end
33+
end
34+
end
35+
end

spec/models/user_spec.rb

+3-36
Original file line numberDiff line numberDiff line change
@@ -177,27 +177,10 @@
177177
end
178178
end
179179

180-
describe '#setting_auto_play_gif' do
181-
it 'returns auto-play gif setting' do
180+
describe 'settings' do
181+
it 'is instance of Settings::ScopedSettings' do
182182
user = Fabricate(:user)
183-
user.settings[:auto_play_gif] = false
184-
expect(user.setting_auto_play_gif).to eq false
185-
end
186-
end
187-
188-
describe '#setting_system_font_ui' do
189-
it 'returns system font ui setting' do
190-
user = Fabricate(:user)
191-
user.settings[:system_font_ui] = false
192-
expect(user.setting_system_font_ui).to eq false
193-
end
194-
end
195-
196-
describe '#setting_boost_modal' do
197-
it 'returns boost modal setting' do
198-
user = Fabricate(:user)
199-
user.settings[:boost_modal] = false
200-
expect(user.setting_boost_modal).to eq false
183+
expect(user.settings).to be_kind_of Settings::ScopedSettings
201184
end
202185
end
203186

@@ -219,22 +202,6 @@
219202
end
220203
end
221204

222-
describe '#setting_unfollow_modal' do
223-
it 'returns unfollow modal setting' do
224-
user = Fabricate(:user)
225-
user.settings[:unfollow_modal] = true
226-
expect(user.setting_unfollow_modal).to eq true
227-
end
228-
end
229-
230-
describe '#setting_delete_modal' do
231-
it 'returns delete modal setting' do
232-
user = Fabricate(:user)
233-
user.settings[:delete_modal] = false
234-
expect(user.setting_delete_modal).to eq false
235-
end
236-
end
237-
238205
describe 'whitelist' do
239206
around(:each) do |example|
240207
old_whitelist = Rails.configuration.x.email_whitelist

0 commit comments

Comments
 (0)