]> git.openstreetmap.org Git - rails.git/commitdiff
Fix error if no users are selected for a bulk update
authorTom Hughes <tom@compton.nu>
Tue, 11 Mar 2025 22:44:54 +0000 (22:44 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 12 Mar 2025 08:34:26 +0000 (08:34 +0000)
app/controllers/users/lists_controller.rb
test/controllers/users/lists_controller_test.rb

index 59d1bc5419cbef71c148ddf09a9d072e356f7f7d..2f4c4f5fb0159b0de1bdc999d785be42deecc18b 100644 (file)
@@ -33,7 +33,7 @@ module Users
     ##
     # update status of selected users
     def update
-      ids = params[:user].keys.collect(&:to_i)
+      ids = params.fetch(:user, {}).keys.collect(&:to_i)
 
       User.where(:id => ids).update_all(:status => "confirmed") if params[:confirm]
       User.where(:id => ids).update_all(:status => "deleted") if params[:hide]
index 1bb0e86a2b56d06a9be3f7042ee08e98090b029e..2471b34b3b4d534050e80a3e03559edb520e587e 100644 (file)
@@ -210,6 +210,14 @@ module Users
 
       session_for(create(:administrator_user))
 
+      # Should do nothing when no users selected
+      assert_no_difference "User.active.count" do
+        put users_list_path, :params => { :confirm => 1 }
+      end
+      assert_redirected_to :action => :show
+      assert_equal "pending", inactive_user.reload.status
+      assert_equal "suspended", suspended_user.reload.status
+
       # Should work when logged in as an administrator
       assert_difference "User.active.count", 2 do
         put users_list_path, :params => { :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 } }
@@ -254,6 +262,14 @@ module Users
 
       session_for(create(:administrator_user))
 
+      # Should do nothing when no users selected
+      assert_no_difference "User.active.count" do
+        put users_list_path, :params => { :hide => 1 }
+      end
+      assert_redirected_to :action => :show
+      assert_equal "active", normal_user.reload.status
+      assert_equal "confirmed", confirmed_user.reload.status
+
       # Should work when logged in as an administrator
       assert_difference "User.active.count", -2 do
         put users_list_path, :params => { :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 } }