]> git.openstreetmap.org Git - rails.git/blobdiff - test/controllers/preferences_controller_test.rb
Merge remote-tracking branch 'upstream/pull/5499'
[rails.git] / test / controllers / preferences_controller_test.rb
index 6bc609e6abca77dc4cdebe680e0da53d12171df0..86fc89a717af16780c21e472a7c3e12a7981543f 100644 (file)
@@ -9,11 +9,6 @@ class PreferencesControllerTest < ActionDispatch::IntegrationTest
       { :controller => "preferences", :action => "show" }
     )
 
       { :controller => "preferences", :action => "show" }
     )
 
-    assert_routing(
-      { :path => "/preferences/edit", :method => :get },
-      { :controller => "preferences", :action => "edit" }
-    )
-
     assert_routing(
       { :path => "/preferences", :method => :put },
       { :controller => "preferences", :action => "update" }
     assert_routing(
       { :path => "/preferences", :method => :put },
       { :controller => "preferences", :action => "update" }
@@ -22,35 +17,85 @@ class PreferencesControllerTest < ActionDispatch::IntegrationTest
 
   def test_update_preferred_editor
     user = create(:user, :languages => [])
 
   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
     session_for(user)
 
     # Changing to a invalid editor should fail
-    user.preferred_editor = "unknown"
-    put preferences_path, :params => { :user => user.attributes }
+    put preferences_path, :params => { :user => { :preferred_editor => "unknown", :languages => [] } }
     assert_response :success
     assert_response :success
-    assert_template :edit
-    assert_select ".notice", false
-    assert_select ".error", true
-    assert_select "form > div > select#user_preferred_editor > option[selected]", false
+    assert_template :show
+    assert_select ".alert-success", false
+    assert_select ".alert-danger", true
+    user.reload
+    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
 
     # Changing to a valid editor should work
 
     # Changing to a valid editor should work
-    user.preferred_editor = "id"
-    put preferences_path, :params => { :user => user.attributes }
-    assert_response :redirect
+    put preferences_path, :params => { :user => { :preferred_editor => "id", :languages => [] } }
     assert_redirected_to preferences_path
     follow_redirect!
     assert_template :show
     assert_redirected_to preferences_path
     follow_redirect!
     assert_template :show
-    assert_select ".notice", /^Preferences updated/
-    assert_select "dd", "iD (in-browser editor)"
+    assert_select ".alert-success", /^Preferences updated/
+    user.reload
+    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
 
     # Changing to the default editor should work
 
     # Changing to the default editor should work
-    user.preferred_editor = "default"
-    put preferences_path, :params => { :user => user.attributes }
-    assert_response :redirect
+    put preferences_path, :params => { :user => { :preferred_editor => "default", :languages => [] } }
+    assert_redirected_to preferences_path
+    follow_redirect!
+    assert_template :show
+    assert_select ".alert-success", /^Preferences updated/
+    user.reload
+    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
+  end
+
+  def test_update_preferred_site_color_scheme
+    user = create(:user, :languages => [])
+    session_for(user)
+    assert_nil user.preferences.find_by(:k => "site.color_scheme")
+
+    # Changing when previously not defined
+    put preferences_path, :params => { :user => user.attributes, :site_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 => "site.color_scheme")&.v
+
+    # Changing when previously defined
+    put preferences_path, :params => { :user => user.attributes, :site_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 => "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_redirected_to preferences_path
     follow_redirect!
     assert_template :show
-    assert_select ".notice", /^Preferences updated/
-    assert_select "dd", "Default (currently iD)"
+    assert_select ".alert-success", /^Preferences updated/
+    assert_equal "auto", user.preferences.find_by(:k => "map.color_scheme")&.v
   end
 end
   end
 end