Merge pull request #4866 from JaredReisinger/admin-user-pagination

Add pagination to /admin/users/list API
This commit is contained in:
Blake Erickson 2017-05-22 15:12:59 -06:00 committed by GitHub
commit 4e8beda332
2 changed files with 28 additions and 2 deletions

View File

@ -25,7 +25,11 @@ class AdminUserIndexQuery
}
def find_users(limit=100)
find_users_query.limit(limit)
page = params[:page].to_i - 1
if page < 0
page = 0
end
find_users_query.limit(limit).offset(page * limit)
end
def count_users

View File

@ -26,7 +26,7 @@ describe AdminUserIndexQuery do
query = ::AdminUserIndexQuery.new({ order: "trust_level" })
expect(query.find_users_query.to_sql).to match("trust_level DESC")
end
it "allows custom ordering asc" do
query = ::AdminUserIndexQuery.new({ order: "trust_level", ascending: true })
expect(query.find_users_query.to_sql).to match("trust_level ASC" )
@ -43,6 +43,28 @@ describe AdminUserIndexQuery do
end
end
describe "pagination" do
it "defaults to the first page" do
query = ::AdminUserIndexQuery.new({})
expect(query.find_users.to_sql).to match("OFFSET 0")
end
it "offsets by 100 by default for page 2" do
query = ::AdminUserIndexQuery.new({ page: "2"})
expect(query.find_users.to_sql).to match("OFFSET 100")
end
it "offsets by limit for page 2" do
query = ::AdminUserIndexQuery.new({ page: "2"})
expect(query.find_users(10).to_sql).to match("OFFSET 10")
end
it "ignores negative pages" do
query = ::AdminUserIndexQuery.new({ page: "-2" })
expect(query.find_users.to_sql).to match("OFFSET 0")
end
end
describe "no users with trust level" do
TrustLevel.levels.each do |key, value|