mirror of
https://github.com/discourse/discourse.git
synced 2025-05-21 18:12:32 +08:00
Add pagination to /admin/users/list API
Prior to this, only the first 100 active/new/etc. users were available via the `/admin/users/list` API. This change adds support for a `page=#` querystring parameter so that *all* of the users can be retrieved. Requests for pages past the last user result in an empty-list response; requests for negative pages (or zero) just return the first page. Added tests to cover pagination.
This commit is contained in:
@ -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|
|
||||
|
Reference in New Issue
Block a user