scope :admins, -> { where(admin: true) }
scope :confirmed, -> { where.not(confirmed_at: nil) }
+ before_validation :sanitize_languages
+
def confirmed?
confirmed_at.present?
end
def setting_auto_play_gif
settings.auto_play_gif
end
+
+ private
+
+ def sanitize_languages
+ allowed_languages.reject!(&:blank?)
+ end
end
describe 'PUT #update' do
it 'updates the user record' do
- put :update, params: { user: { locale: 'en', allowed_languages: ['es', 'fr'] } }
+ put :update, params: { user: { locale: 'en', allowed_languages: ['es', 'fr', ''] } }
expect(response).to redirect_to(settings_preferences_path)
user.reload
expect(results).not_to include(fr_status)
end
+ it 'includes all languages when user does not have a setting' do
+ user = Fabricate(:user, allowed_languages: [])
+ @account.update(user: user)
+
+ en_status = Fabricate(:status, language: 'en')
+ es_status = Fabricate(:status, language: 'es')
+
+ results = Status.as_public_timeline(@account)
+ expect(results).to include(en_status)
+ expect(results).to include(es_status)
+ end
+
it 'includes all languages when account does not have a user' do
expect(@account.user).to be_nil
en_status = Fabricate(:status, language: 'en')
user.valid?
expect(user).to model_have_error_on_field(:email)
end
+
+ it 'cleans out empty string from languages' do
+ user = Fabricate.build(:user, allowed_languages: [''])
+ user.valid?
+ expect(user.allowed_languages).to eq []
+ end
end
describe 'settings' do