From b989922b2be84a27fa62822cb7bbe9c25cbda8cd Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Wed, 18 Jun 2025 10:47:53 +0300 Subject: [PATCH] Allow to skip preferred editor update in basic preferences --- .../preferences/basic_preferences_controller.rb | 12 +++++++----- .../preferences/basic_preferences_controller_test.rb | 5 +++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/controllers/preferences/basic_preferences_controller.rb b/app/controllers/preferences/basic_preferences_controller.rb index a39a1cd9a..d21d6649d 100644 --- a/app/controllers/preferences/basic_preferences_controller.rb +++ b/app/controllers/preferences/basic_preferences_controller.rb @@ -13,11 +13,13 @@ module Preferences current_user.languages += (matching_languages - [params[:language]]) + other_languages unless matching_languages.empty? end - current_user.preferred_editor = if params[:user][:preferred_editor] == "default" - nil - else - params[:user][:preferred_editor] - end + if params.dig(:user, :preferred_editor) + current_user.preferred_editor = if params[:user][:preferred_editor] == "default" + nil + else + params[:user][:preferred_editor] + end + end success = current_user.save diff --git a/test/controllers/preferences/basic_preferences_controller_test.rb b/test/controllers/preferences/basic_preferences_controller_test.rb index 3f2617df4..848659c4d 100644 --- a/test/controllers/preferences/basic_preferences_controller_test.rb +++ b/test/controllers/preferences/basic_preferences_controller_test.rb @@ -145,15 +145,16 @@ module Preferences def check_language_change(from_languages, selecting_language, to_languages) I18n.with_locale "en" do - user = create(:user, :languages => from_languages) + user = create(:user, :preferred_editor => "remote", :languages => from_languages) another_user = create(:user, :languages => %w[not going to change]) session_for(user) - put basic_preferences_path, :params => { :user => { :preferred_editor => "default" }, :language => selecting_language } + put basic_preferences_path, :params => { :language => selecting_language } assert_redirected_to basic_preferences_path user.reload assert_equal to_languages, user.languages + assert_equal "remote", user.preferred_editor another_user.reload assert_equal %w[not going to change], another_user.languages end -- 2.39.5