]> git.openstreetmap.org Git - rails.git/commitdiff
Redirect after saving settings in case the username has changed
authorTom Hughes <tom@compton.nu>
Tue, 19 Jan 2021 18:24:41 +0000 (18:24 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 19 Jan 2021 18:57:34 +0000 (18:57 +0000)
Fixes #3059

.rubocop_todo.yml
app/controllers/users_controller.rb
test/controllers/users_controller_test.rb

index 9aea439cb01f5b435f6bec0a8dce68197b5af69a..872a03d8b82bc0b3dce58415cd490fa206163a7f 100644 (file)
@@ -52,7 +52,7 @@ Lint/DuplicateBranch:
 # Offense count: 487
 # Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
 Metrics/AbcSize:
-  Max: 194
+  Max: 234
 
 # Offense count: 62
 # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
@@ -92,7 +92,7 @@ Metrics/PerceivedComplexity:
 
 # Offense count: 365
 Minitest/MultipleAssertions:
-  Max: 81
+  Max: 97
 
 # Offense count: 4
 Naming/AccessorMethodName:
index 7f12720a6efeb8c3110f3bbde92be78efb03f0bf..b274b180849a480354ca4cc94c474786a098f220 100644 (file)
@@ -128,6 +128,7 @@ class UsersController < ApplicationController
          (params[:user][:auth_provider] == current_user.auth_provider &&
           params[:user][:auth_uid] == current_user.auth_uid)
         update_user(current_user, params)
+        redirect_to user_account_url(current_user) if current_user.errors.count.zero?
       else
         session[:new_user_settings] = params
         redirect_to auth_url(params[:user][:auth_provider], params[:user][:auth_uid])
@@ -461,6 +462,8 @@ class UsersController < ApplicationController
 
       update_user(current_user, settings)
 
+      flash.discard
+
       session[:user_errors] = current_user.errors.as_json
 
       redirect_to :action => "account", :display_name => current_user.display_name
@@ -655,12 +658,12 @@ class UsersController < ApplicationController
       set_locale(:reset => true)
 
       if user.new_email.blank? || user.new_email == user.email
-        flash.now[:notice] = t "users.account.flash update success"
+        flash[:notice] = t "users.account.flash update success"
       else
         user.email = user.new_email
 
         if user.valid?
-          flash.now[:notice] = t "users.account.flash update success confirm needed"
+          flash[:notice] = t "users.account.flash update success confirm needed"
 
           begin
             UserMailer.email_confirm(user, user.tokens.create).deliver_later
index 89c2d2c9c040f8f0d50ed0de0c0fe5d8dd080bc5..12a804bc56cef94f074f482601cc2679d67bc739 100644 (file)
@@ -953,6 +953,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     user.description = "new description"
     user.preferred_editor = "default"
     post user_account_path(user), :params => { :user => user.attributes }
+    assert_response :redirect
+    assert_redirected_to user_account_url(user)
+    get user_account_path(user)
     assert_response :success
     assert_template :account
     assert_select "div#errorExplanation", false
@@ -971,6 +974,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     # Changing to a valid editor should work
     user.preferred_editor = "id"
     post user_account_path(user), :params => { :user => user.attributes }
+    assert_response :redirect
+    assert_redirected_to user_account_url(user)
+    get user_account_path(user)
     assert_response :success
     assert_template :account
     assert_select "div#errorExplanation", false
@@ -980,6 +986,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     # Changing to the default editor should work
     user.preferred_editor = "default"
     post user_account_path(user), :params => { :user => user.attributes }
+    assert_response :redirect
+    assert_redirected_to user_account_url(user)
+    get user_account_path(user)
     assert_response :success
     assert_template :account
     assert_select "div#errorExplanation", false
@@ -989,6 +998,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     # Changing to an uploaded image should work
     image = Rack::Test::UploadedFile.new("test/gpx/fixtures/a.gif", "image/gif")
     post user_account_path(user), :params => { :avatar_action => "new", :user => user.attributes.merge(:avatar => image) }
+    assert_response :redirect
+    assert_redirected_to user_account_url(user)
+    get user_account_path(user)
     assert_response :success
     assert_template :account
     assert_select "div#errorExplanation", false
@@ -997,6 +1009,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
 
     # Changing to a gravatar image should work
     post user_account_path(user), :params => { :avatar_action => "gravatar", :user => user.attributes }
+    assert_response :redirect
+    assert_redirected_to user_account_url(user)
+    get user_account_path(user)
     assert_response :success
     assert_template :account
     assert_select "div#errorExplanation", false
@@ -1005,6 +1020,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
 
     # Removing the image should work
     post user_account_path(user), :params => { :avatar_action => "delete", :user => user.attributes }
+    assert_response :redirect
+    assert_redirected_to user_account_url(user)
+    get user_account_path(user)
     assert_response :success
     assert_template :account
     assert_select "div#errorExplanation", false
@@ -1037,6 +1055,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     # Changing name to one that doesn't exist should work
     new_attributes = user.attributes.dup.merge(:display_name => "new tester")
     post user_account_path(user), :params => { :user => new_attributes }
+    assert_response :redirect
+    assert_redirected_to user_account_url(:display_name => "new tester")
+    get user_account_path(:display_name => "new tester")
     assert_response :success
     assert_template :account
     assert_select "div#errorExplanation", false
@@ -1079,6 +1100,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
         post user_account_path(user), :params => { :user => user.attributes }
       end
     end
+    assert_response :redirect
+    assert_redirected_to user_account_url(user)
+    get user_account_path(user)
     assert_response :success
     assert_template :account
     assert_select "div#errorExplanation", false