diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/controllers/settings/preferences_controller_spec.rb | 8 | ||||
-rw-r--r-- | spec/models/status_spec.rb | 25 |
2 files changed, 30 insertions, 3 deletions
diff --git a/spec/controllers/settings/preferences_controller_spec.rb b/spec/controllers/settings/preferences_controller_spec.rb index 92b626d2d..432e35cd4 100644 --- a/spec/controllers/settings/preferences_controller_spec.rb +++ b/spec/controllers/settings/preferences_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe Settings::PreferencesController do render_views - let(:user) { Fabricate(:user) } + let(:user) { Fabricate(:user, allowed_languages: []) } before do sign_in user, scope: :user @@ -18,10 +18,12 @@ describe Settings::PreferencesController do describe 'PUT #update' do it 'updates the user record' do - put :update, params: { user: { locale: 'en' } } + put :update, params: { user: { locale: 'en', allowed_languages: ['es', 'fr'] } } expect(response).to redirect_to(settings_preferences_path) - expect(user.reload.locale).to eq 'en' + user.reload + expect(user.locale).to eq 'en' + expect(user.allowed_languages).to eq ['es', 'fr'] end it 'updates user settings' do diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index c553b052e..0c0b16829 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -251,6 +251,31 @@ RSpec.describe Status, type: :model do expect(results).not_to include(muted_status) end + context 'with language preferences' do + it 'excludes statuses in languages not allowed by the account user' do + user = Fabricate(:user, allowed_languages: [:en, :es]) + @account.update(user: user) + en_status = Fabricate(:status, language: 'en') + es_status = Fabricate(:status, language: 'es') + fr_status = Fabricate(:status, language: 'fr') + + results = Status.as_public_timeline(@account) + expect(results).to include(en_status) + expect(results).to include(es_status) + expect(results).not_to include(fr_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') + 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 + end + context 'where that account is silenced' do it 'includes statuses from other accounts that are silenced' do @account.update(silenced: true) |