]> git.openstreetmap.org Git - rails.git/commitdiff
Preserve username and edit filters over bulk user updates
authorTom Hughes <tom@compton.nu>
Tue, 11 Mar 2025 22:45:08 +0000 (22:45 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 12 Mar 2025 08:34:27 +0000 (08:34 +0000)
app/controllers/users/lists_controller.rb
app/views/users/lists/_page.html.erb
test/controllers/users/lists_controller_test.rb

index 2f4c4f5fb0159b0de1bdc999d785be42deecc18b..5a0ff205ba0cd5404fbdf77f2ce258f380526a91 100644 (file)
@@ -38,7 +38,7 @@ module Users
       User.where(:id => ids).update_all(:status => "confirmed") if params[:confirm]
       User.where(:id => ids).update_all(:status => "deleted") if params[:hide]
 
-      redirect_to url_for(params.permit(:status, :ip, :before, :after))
+      redirect_to url_for(params.permit(:status, :username, :ip, :edits, :before, :after))
     end
   end
 end
index 2c06f02375230e55d17d930f3ca7bf617cc1a16d..b3dfcc6046a2a26ccccb860ef45a1904de5f3cb7 100644 (file)
@@ -14,7 +14,9 @@
       <div>
 
       <%= hidden_field_tag :status, params[:status] if params[:status] %>
+      <%= hidden_field_tag :username, params[:username] if params[:username] %>
       <%= hidden_field_tag :ip, params[:ip] if params[:ip] %>
+      <%= hidden_field_tag :edits, params[:edits] if params[:edits] %>
       <%= hidden_field_tag :page, params[:page] if params[:page] %>
       <table id="user_list" class="table table-borderless table-striped">
         <thead>
index 2471b34b3b4d534050e80a3e03559edb520e587e..6326bdb1857c66931fe4e76e3a6bcd48f3ccd2b5 100644 (file)
@@ -67,64 +67,88 @@ module Users
       get users_list_path, :params => { :status => "suspended" }
       assert_response :success
       assert_template :show
-      assert_select "table#user_list tbody tr", :count => 1 do
-        assert_select "a[href='#{user_path(suspended_user)}']", :count => 1
+      assert_select "turbo-frame#pagination", :count => 1 do
+        assert_select "input[type='hidden'][name='status'][value='suspended']", :count => 1
+        assert_select "table#user_list tbody tr", :count => 1 do
+          assert_select "a[href='#{user_path(suspended_user)}']", :count => 1
+        end
       end
 
       # Should be able to limit by name
       get users_list_path, :params => { :username => "Test User" }
       assert_response :success
       assert_template :show
-      assert_select "table#user_list tbody tr", :count => 1 do
-        assert_select "a[href='#{user_path(name_user)}']", :count => 1
+      assert_select "turbo-frame#pagination", :count => 1 do
+        assert_select "input[type='hidden'][name='username'][value='Test User']", :count => 1
+        assert_select "table#user_list tbody tr", :count => 1 do
+          assert_select "a[href='#{user_path(name_user)}']", :count => 1
+        end
       end
 
       # Should be able to limit by name ignoring case
       get users_list_path, :params => { :username => "test user" }
       assert_response :success
       assert_template :show
-      assert_select "table#user_list tbody tr", :count => 1 do
-        assert_select "a[href='#{user_path(name_user)}']", :count => 1
+      assert_select "turbo-frame#pagination", :count => 1 do
+        assert_select "input[type='hidden'][name='username'][value='test user']", :count => 1
+        assert_select "table#user_list tbody tr", :count => 1 do
+          assert_select "a[href='#{user_path(name_user)}']", :count => 1
+        end
       end
 
       # Should be able to limit by email
       get users_list_path, :params => { :username => "test@example.com" }
       assert_response :success
       assert_template :show
-      assert_select "table#user_list tbody tr", :count => 1 do
-        assert_select "a[href='#{user_path(email_user)}']", :count => 1
+      assert_select "turbo-frame#pagination", :count => 1 do
+        assert_select "input[type='hidden'][name='username'][value='test@example.com']", :count => 1
+        assert_select "table#user_list tbody tr", :count => 1 do
+          assert_select "a[href='#{user_path(email_user)}']", :count => 1
+        end
       end
 
       # Should be able to limit by email ignoring case
       get users_list_path, :params => { :username => "TEST@example.com" }
       assert_response :success
       assert_template :show
-      assert_select "table#user_list tbody tr", :count => 1 do
-        assert_select "a[href='#{user_path(email_user)}']", :count => 1
+      assert_select "turbo-frame#pagination", :count => 1 do
+        assert_select "input[type='hidden'][name='username'][value='TEST@example.com']", :count => 1
+        assert_select "table#user_list tbody tr", :count => 1 do
+          assert_select "a[href='#{user_path(email_user)}']", :count => 1
+        end
       end
 
       # Should be able to limit by IP address
       get users_list_path, :params => { :ip => "1.2.3.4" }
       assert_response :success
       assert_template :show
-      assert_select "table#user_list tbody tr", :count => 1 do
-        assert_select "a[href='#{user_path(ip_user)}']", :count => 1
+      assert_select "turbo-frame#pagination", :count => 1 do
+        assert_select "input[type='hidden'][name='ip'][value='1.2.3.4']", :count => 1
+        assert_select "table#user_list tbody tr", :count => 1 do
+          assert_select "a[href='#{user_path(ip_user)}']", :count => 1
+        end
       end
 
       # Should be able to limit to users with edits
       get users_list_path, :params => { :edits => "yes" }
       assert_response :success
       assert_template :show
-      assert_select "table#user_list tbody tr", :count => 1 do
-        assert_select "a[href='#{user_path(edits_user)}']", :count => 1
+      assert_select "turbo-frame#pagination", :count => 1 do
+        assert_select "input[type='hidden'][name='edits'][value='yes']", :count => 1
+        assert_select "table#user_list tbody tr", :count => 1 do
+          assert_select "a[href='#{user_path(edits_user)}']", :count => 1
+        end
       end
 
       # Should be able to limit to users with no edits
       get users_list_path, :params => { :edits => "no" }
       assert_response :success
       assert_template :show
-      assert_select "table#user_list tbody tr", :count => 9 do
-        assert_select "a[href='#{user_path(edits_user)}']", :count => 0
+      assert_select "turbo-frame#pagination", :count => 1 do
+        assert_select "input[type='hidden'][name='edits'][value='no']", :count => 1
+        assert_select "table#user_list tbody tr", :count => 9 do
+          assert_select "a[href='#{user_path(edits_user)}']", :count => 0
+        end
       end
     end