diff --git a/spec/controllers/settings/preferences/other_controller_spec.rb b/spec/controllers/settings/preferences/other_controller_spec.rb deleted file mode 100644 index 117fdeea7c..0000000000 --- a/spec/controllers/settings/preferences/other_controller_spec.rb +++ /dev/null @@ -1,54 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Settings::Preferences::OtherController do - render_views - - let(:user) { Fabricate(:user, chosen_languages: []) } - - before do - sign_in user, scope: :user - end - - describe 'GET #show' do - before do - get :show - end - - it 'returns http success with private cache control headers', :aggregate_failures do - expect(response).to have_http_status(200) - expect(response.headers['Cache-Control']).to include('private, no-store') - end - end - - describe 'PUT #update' do - it 'updates the user record' do - put :update, params: { user: { locale: 'en', chosen_languages: ['es', 'fr', ''] } } - - expect(response).to redirect_to(settings_preferences_other_path) - user.reload - expect(user.locale).to eq 'en' - expect(user.chosen_languages).to eq %w(es fr) - end - - it 'updates user settings' do - user.settings.update('web.reblog_modal': false, 'web.delete_modal': true) - user.save - - put :update, params: { - user: { - settings_attributes: { - 'web.reblog_modal': '1', - 'web.delete_modal': '0', - }, - }, - } - - expect(response).to redirect_to(settings_preferences_other_path) - user.reload - expect(user.settings['web.reblog_modal']).to be true - expect(user.settings['web.delete_modal']).to be false - end - end -end diff --git a/spec/system/settings/preferences/other_spec.rb b/spec/system/settings/preferences/other_spec.rb new file mode 100644 index 0000000000..7cc15f87a4 --- /dev/null +++ b/spec/system/settings/preferences/other_spec.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Settings preferences other page' do + let(:user) { Fabricate :user } + + before { sign_in user } + + it 'Views and updates user prefs' do + visit settings_preferences_other_path + + expect(page) + .to have_private_cache_control + + check language_field(:es) + check language_field(:fr) + check mark_sensitive_field + + expect { save_changes } + .to change { user.reload.chosen_languages }.to(%w(es fr)) + .and(change { user.reload.settings.default_sensitive }.to(true)) + expect(page) + .to have_title(I18n.t('settings.preferences')) + end + + def save_changes + within('form') { click_on submit_button } + end + + def mark_sensitive_field + I18n.t('simple_form.labels.defaults.setting_default_sensitive') + end + + def language_field(key) + LanguagesHelper::SUPPORTED_LOCALES[key].last + end +end