def test_update_preferred_editor
user = create(:user, :languages => [])
user.preferences.create(:k => "site.color_scheme", :v => "light")
+ user.preferences.create(:k => "map.color_scheme", :v => "light")
session_for(user)
# Changing to a invalid editor should fail
assert_select ".alert-danger", true
assert_select "form > div > select#user_preferred_editor > option[selected]", false
assert_equal "light", user.preferences.find_by(:k => "site.color_scheme")&.v
+ assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v
# Changing to a valid editor should work
user.preferred_editor = "id"
assert_select ".alert-success", /^Preferences updated/
assert_select "dd", "iD (in-browser 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
# Changing to the default editor should work
user.preferred_editor = "default"
assert_select ".alert-success", /^Preferences updated/
assert_select "dd", "Default (currently iD)"
assert_equal "light", user.preferences.find_by(:k => "site.color_scheme")&.v
+ assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v
end
def test_update_preferred_site_color_scheme
assert_select ".alert-success", /^Preferences updated/
assert_equal "auto", user.preferences.find_by(:k => "site.color_scheme")&.v
end
+
+ def test_update_preferred_map_color_scheme
+ user = create(:user, :languages => [])
+ session_for(user)
+ assert_nil user.preferences.find_by(:k => "map.color_scheme")
+
+ # Changing when previously not defined
+ put preferences_path, :params => { :user => user.attributes, :map_color_scheme => "light" }
+ assert_redirected_to preferences_path
+ follow_redirect!
+ assert_template :show
+ assert_select ".alert-success", /^Preferences updated/
+ assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v
+
+ # Changing when previously defined
+ put preferences_path, :params => { :user => user.attributes, :map_color_scheme => "auto" }
+ assert_redirected_to preferences_path
+ follow_redirect!
+ assert_template :show
+ assert_select ".alert-success", /^Preferences updated/
+ assert_equal "auto", user.preferences.find_by(:k => "map.color_scheme")&.v
+ end
end