From cc2c14aee03f0ddaa84c35ca8f7d5803746bbd0d Mon Sep 17 00:00:00 2001 From: Peculiar Erhisohwode <75625011+PeculiarE@users.noreply.github.com> Date: Tue, 9 Aug 2022 23:50:39 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20fetch=20users=20on=20spa?= =?UTF-8?q?m=20management=20dashboard=20(#1811)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/spam_controller.rb | 14 ++++++++ config/routes.rb | 2 +- test/controllers/spam_controller_test.rb | 46 ++++++++++++++++++++++++ test/integration/routes_test.rb | 6 +++- 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/app/controllers/spam_controller.rb b/app/controllers/spam_controller.rb index a5fdd8751..0f2d20a67 100644 --- a/app/controllers/spam_controller.rb +++ b/app/controllers/spam_controller.rb @@ -155,4 +155,18 @@ def filter_maps paginate_results(Map.order('updated_at DESC')) end end + + def filter_users + @users = case params[:type] + when 'banned' + paginate_results(User.where(status: 0).order('created_at DESC')) + when 'moderator' + paginate_results(User.where(role: 'moderator').order('created_at DESC')) + when 'admin' + paginate_results(User.where(role: 'admin').order('created_at DESC')) + else + paginate_results(User.where(status: 1).order('created_at DESC')) + end + puts @users.inspect + end end diff --git a/config/routes.rb b/config/routes.rb index e7e54f2ff..3b09b28b5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -136,7 +136,7 @@ delete action + '/:ids', action: action, as: action end - %w(filter_maps).each do |action| + %w(filter_maps filter_users).each do |action| get action + '/:type', action: action, as: action end end diff --git a/test/controllers/spam_controller_test.rb b/test/controllers/spam_controller_test.rb index 2c82b8016..324bc1802 100644 --- a/test/controllers/spam_controller_test.rb +++ b/test/controllers/spam_controller_test.rb @@ -537,4 +537,50 @@ def users_custom_setup(ban_users: true) assert_equal 5, Map.count assert_equal 1, @maps.length end + + test 'should filter users and show only active users' do + @user.ban + + assert_equal User::Status::BANNED, @user.status + assert_equal 'quentin', @user.login + + session[:user_id] = 2 + post(:filter_users, params: { type: 'active' }) + @users = assigns(:users) + + assert_equal 4, User.count + assert_equal 3, @users.length + assert @users.all? { |user| user.status == User::Status::NORMAL } + assert @users.collect(&:login).exclude?('quentin') + end + + test 'should filter users and show only banned users' do + @user.ban + + session[:user_id] = 2 + post(:filter_users, params: { type: 'banned' }) + @users = assigns(:users) + + assert_equal 4, User.count + assert_equal 1, @users.length + assert @users.all? { |user| user.status == User::Status::BANNED && user.login == 'quentin'} + end + + test 'should filter users and show only moderators' do + session[:user_id] = 2 + post(:filter_users, params: { type: 'moderator', limit: 5 }) + @users = assigns(:users) + + assert_equal 4, User.count + assert_equal 0, @users.length + end + + test 'should filter users and show only admins' do + session[:user_id] = 2 + post(:filter_users, params: { type: 'admin', limit: 5 }) + @users = assigns(:users) + + assert_equal 4, User.count + assert_equal 1, @users.length + end end diff --git a/test/integration/routes_test.rb b/test/integration/routes_test.rb index 9a997052a..cf65701ff 100644 --- a/test/integration/routes_test.rb +++ b/test/integration/routes_test.rb @@ -39,6 +39,10 @@ class RoutesTest < ActionDispatch::IntegrationTest end test "test filter-maps route" do - assert_routing({ path: '/moderate/filter_maps/created', method: :get }, { controller: 'spam', action: 'filter_maps', type: 'created' }) + assert_routing({ path: '/moderate/filter_maps/updated', method: :get }, { controller: 'spam', action: 'filter_maps', type: 'updated' }) + end + + test "test filter-users route" do + assert_routing({ path: '/moderate/filter_users/active', method: :get }, { controller: 'spam', action: 'filter_users', type: 'active' }) end end