From 99af3b157364bc194623653861cdbb6e67264c18 Mon Sep 17 00:00:00 2001 From: Marwin Hochfelsner <50826859+hlfan@users.noreply.github.com> Date: Mon, 3 Nov 2025 02:14:02 +0100 Subject: [PATCH] Store selected editor color scheme --- .../basic_preferences_controller.rb | 5 ++++ .../basic_preferences_controller_test.rb | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/app/controllers/preferences/basic_preferences_controller.rb b/app/controllers/preferences/basic_preferences_controller.rb index 10026fa73..a5c47fa41 100644 --- a/app/controllers/preferences/basic_preferences_controller.rb +++ b/app/controllers/preferences/basic_preferences_controller.rb @@ -35,6 +35,11 @@ module Preferences success &= map_color_scheme_preference.update(:v => params[:map_color_scheme]) end + if params[:editor_color_scheme] + editor_color_scheme_preference = current_user.preferences.find_or_create_by(:k => "editor.color_scheme") + success &= editor_color_scheme_preference.update(:v => params[:editor_color_scheme]) + end + success end end diff --git a/test/controllers/preferences/basic_preferences_controller_test.rb b/test/controllers/preferences/basic_preferences_controller_test.rb index 4a9f3edc4..8d251c082 100644 --- a/test/controllers/preferences/basic_preferences_controller_test.rb +++ b/test/controllers/preferences/basic_preferences_controller_test.rb @@ -27,6 +27,7 @@ module Preferences user = create(:user, :languages => []) user.preferences.create(:k => "site.color_scheme", :v => "light") user.preferences.create(:k => "map.color_scheme", :v => "light") + user.preferences.create(:k => "editor.color_scheme", :v => "light") session_for(user) # Changing to a invalid editor should fail @@ -39,6 +40,7 @@ module Preferences assert_nil user.preferred_editor assert_equal "light", user.preferences.find_by(:k => "site.color_scheme")&.v assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v + assert_equal "light", user.preferences.find_by(:k => "editor.color_scheme")&.v # Changing to a valid editor should work put basic_preferences_path, :params => { :user => { :preferred_editor => "id" } } @@ -50,6 +52,7 @@ module Preferences assert_equal "id", user.preferred_editor assert_equal "light", user.preferences.find_by(:k => "site.color_scheme")&.v assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v + assert_equal "light", user.preferences.find_by(:k => "editor.color_scheme")&.v # Changing to the default editor should work put basic_preferences_path, :params => { :user => { :preferred_editor => "default" } } @@ -61,6 +64,7 @@ module Preferences assert_nil user.preferred_editor assert_equal "light", user.preferences.find_by(:k => "site.color_scheme")&.v assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v + assert_equal "light", user.preferences.find_by(:k => "editor.color_scheme")&.v end def test_update_with_referer @@ -149,6 +153,28 @@ module Preferences assert_equal "auto", user.preferences.find_by(:k => "map.color_scheme")&.v end + def test_update_preferred_editor_color_scheme + user = create(:user, :languages => []) + session_for(user) + assert_nil user.preferences.find_by(:k => "editor.color_scheme") + + # Changing when previously not defined + put basic_preferences_path, :params => { :user => user.attributes, :editor_color_scheme => "light" } + assert_redirected_to basic_preferences_path + follow_redirect! + assert_template :show + assert_select ".alert-success", /^Preferences updated/ + assert_equal "light", user.preferences.find_by(:k => "editor.color_scheme")&.v + + # Changing when previously defined + put basic_preferences_path, :params => { :user => user.attributes, :editor_color_scheme => "auto" } + assert_redirected_to basic_preferences_path + follow_redirect! + assert_template :show + assert_select ".alert-success", /^Preferences updated/ + assert_equal "auto", user.preferences.find_by(:k => "editor.color_scheme")&.v + end + private def check_language_change(from_languages, selecting_language, to_languages) -- 2.39.5