From 7b83237261545529b1699ac4b7559890dfe9683d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= <regis@hanol.fr> Date: Thu, 16 Jan 2020 23:57:34 +0100 Subject: [PATCH] FIX: groups pagination was broken --- app/controllers/groups_controller.rb | 7 +++++-- spec/requests/groups_controller_spec.rb | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 6081f4debbd..dc7f226110e 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -80,6 +80,9 @@ class GroupsController < ApplicationController type_filters = type_filters - [:my, :owner] end + # count the total before doing pagination + total = groups.count + page = params[:page].to_i page_size = MobileDetection.mobile_device?(request.user_agent) ? 15 : 36 groups = groups.offset(page * page_size).limit(page_size) @@ -93,14 +96,14 @@ class GroupsController < ApplicationController extras: { type_filters: type_filters }, - total_rows_groups: groups.count, + total_rows_groups: total, load_more_groups: groups_path( page: page + 1, type: type, order: order, asc: params[:asc], filter: filter - ), + ) ) end diff --git a/spec/requests/groups_controller_spec.rb b/spec/requests/groups_controller_spec.rb index 05acd8e611b..fa07869b542 100644 --- a/spec/requests/groups_controller_spec.rb +++ b/spec/requests/groups_controller_spec.rb @@ -14,6 +14,30 @@ describe GroupsController do Fabricate(:group, name: 'staff_group', visibility_level: Group.visibility_levels[:staff]) end + it "ensures that groups can be paginated" do + 50.times { Fabricate(:group) } + + get "/groups.json" + + expect(response.status).to eq(200) + + body = JSON.parse(response.body) + + expect(body["groups"].size).to eq(36) + expect(body["total_rows_groups"]).to eq(50) + expect(body["load_more_groups"]).to eq("/groups?page=1") + + get "/groups.json", params: { page: 1 } + + expect(response.status).to eq(200) + + body = JSON.parse(response.body) + + expect(body["groups"].size).to eq(14) + expect(body["total_rows_groups"]).to eq(50) + expect(body["load_more_groups"]).to eq("/groups?page=2") + end + context 'when group directory is disabled' do before do SiteSetting.enable_group_directory = false