AdminAPI: sort user results by ID descending

This commit is contained in:
Alex Gleason 2021-07-13 21:37:25 -05:00
parent b221d77a6d
commit 5e88796784
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
3 changed files with 58 additions and 71 deletions

View File

@ -23,7 +23,7 @@ def user(params \\ %{}) do
|> Map.drop([:page, :page_size]) |> Map.drop([:page, :page_size])
|> Map.put(:invisible, false) |> Map.put(:invisible, false)
|> User.Query.build() |> User.Query.build()
|> order_by([u], u.nickname) |> order_by(desc: :id)
paginated_query = paginated_query =
User.Query.paginate(query, params[:page] || 1, params[:page_size] || @page_size) User.Query.paginate(query, params[:page] || 1, params[:page_size] || @page_size)

View File

@ -376,13 +376,7 @@ test "renders users array for the first page", %{conn: conn, admin: admin} do
conn = get(conn, "/api/pleroma/admin/users?page=1") conn = get(conn, "/api/pleroma/admin/users?page=1")
users = users = [
[
user_response(
admin,
%{"roles" => %{"admin" => true, "moderator" => false}}
),
user_response(user, %{"local" => false, "tags" => ["foo", "bar"]}),
user_response( user_response(
user2, user2,
%{ %{
@ -391,9 +385,13 @@ test "renders users array for the first page", %{conn: conn, admin: admin} do
"registration_reason" => "I'm a chill dude", "registration_reason" => "I'm a chill dude",
"actor_type" => "Person" "actor_type" => "Person"
} }
),
user_response(user, %{"local" => false, "tags" => ["foo", "bar"]}),
user_response(
admin,
%{"roles" => %{"admin" => true, "moderator" => false}}
) )
] ]
|> Enum.sort_by(& &1["nickname"])
assert json_response(conn, 200) == %{ assert json_response(conn, 200) == %{
"count" => 3, "count" => 3,
@ -517,7 +515,7 @@ test "regular search with page size", %{conn: conn} do
assert json_response(conn1, 200) == %{ assert json_response(conn1, 200) == %{
"count" => 2, "count" => 2,
"page_size" => 1, "page_size" => 1,
"users" => [user_response(user)] "users" => [user_response(user2)]
} }
conn2 = get(conn, "/api/pleroma/admin/users?query=a&page_size=1&page=2") conn2 = get(conn, "/api/pleroma/admin/users?query=a&page_size=1&page=2")
@ -525,7 +523,7 @@ test "regular search with page size", %{conn: conn} do
assert json_response(conn2, 200) == %{ assert json_response(conn2, 200) == %{
"count" => 2, "count" => 2,
"page_size" => 1, "page_size" => 1,
"users" => [user_response(user2)] "users" => [user_response(user)]
} }
end end
@ -557,8 +555,7 @@ test "only local users with no query", %{conn: conn, admin: old_admin} do
conn = get(conn, "/api/pleroma/admin/users?filters=local") conn = get(conn, "/api/pleroma/admin/users?filters=local")
users = users = [
[
user_response(user), user_response(user),
user_response(admin, %{ user_response(admin, %{
"roles" => %{"admin" => true, "moderator" => false} "roles" => %{"admin" => true, "moderator" => false}
@ -568,7 +565,6 @@ test "only local users with no query", %{conn: conn, admin: old_admin} do
"roles" => %{"admin" => true, "moderator" => false} "roles" => %{"admin" => true, "moderator" => false}
}) })
] ]
|> Enum.sort_by(& &1["nickname"])
assert json_response(conn, 200) == %{ assert json_response(conn, 200) == %{
"count" => 3, "count" => 3,
@ -596,7 +592,6 @@ test "only unconfirmed users", %{conn: conn} do
"is_approved" => true "is_approved" => true
}) })
end) end)
|> Enum.sort_by(& &1["nickname"])
assert result == %{"count" => 2, "page_size" => 50, "users" => users} assert result == %{"count" => 2, "page_size" => 50, "users" => users}
end end
@ -634,18 +629,16 @@ test "load only admins", %{conn: conn, admin: admin} do
conn = get(conn, "/api/pleroma/admin/users?filters=is_admin") conn = get(conn, "/api/pleroma/admin/users?filters=is_admin")
users = users = [
[ user_response(second_admin, %{
user_response(admin, %{
"is_active" => true, "is_active" => true,
"roles" => %{"admin" => true, "moderator" => false} "roles" => %{"admin" => true, "moderator" => false}
}), }),
user_response(second_admin, %{ user_response(admin, %{
"is_active" => true, "is_active" => true,
"roles" => %{"admin" => true, "moderator" => false} "roles" => %{"admin" => true, "moderator" => false}
}) })
] ]
|> Enum.sort_by(& &1["nickname"])
assert json_response(conn, 200) == %{ assert json_response(conn, 200) == %{
"count" => 2, "count" => 2,
@ -685,13 +678,11 @@ test "load users with actor_type is Person", %{admin: admin, conn: conn} do
|> get(user_path(conn, :list), %{actor_types: ["Person"]}) |> get(user_path(conn, :list), %{actor_types: ["Person"]})
|> json_response(200) |> json_response(200)
users = users = [
[ user_response(user2),
user_response(admin, %{"roles" => %{"admin" => true, "moderator" => false}}),
user_response(user1), user_response(user1),
user_response(user2) user_response(admin, %{"roles" => %{"admin" => true, "moderator" => false}})
] ]
|> Enum.sort_by(& &1["nickname"])
assert response == %{"count" => 3, "page_size" => 50, "users" => users} assert response == %{"count" => 3, "page_size" => 50, "users" => users}
end end
@ -708,14 +699,12 @@ test "load users with actor_type is Person and Service", %{admin: admin, conn: c
|> get(user_path(conn, :list), %{actor_types: ["Person", "Service"]}) |> get(user_path(conn, :list), %{actor_types: ["Person", "Service"]})
|> json_response(200) |> json_response(200)
users = users = [
[
user_response(admin, %{"roles" => %{"admin" => true, "moderator" => false}}),
user_response(user1),
user_response(user2), user_response(user2),
user_response(user_service, %{"actor_type" => "Service"}) user_response(user1),
user_response(user_service, %{"actor_type" => "Service"}),
user_response(admin, %{"roles" => %{"admin" => true, "moderator" => false}})
] ]
|> Enum.sort_by(& &1["nickname"])
assert response == %{"count" => 4, "page_size" => 50, "users" => users} assert response == %{"count" => 4, "page_size" => 50, "users" => users}
end end
@ -744,12 +733,10 @@ test "load users with tags list", %{conn: conn} do
conn = get(conn, "/api/pleroma/admin/users?tags[]=first&tags[]=second") conn = get(conn, "/api/pleroma/admin/users?tags[]=first&tags[]=second")
users = users = [
[ user_response(user2, %{"tags" => ["second"]}),
user_response(user1, %{"tags" => ["first"]}), user_response(user1, %{"tags" => ["first"]})
user_response(user2, %{"tags" => ["second"]})
] ]
|> Enum.sort_by(& &1["nickname"])
assert json_response(conn, 200) == %{ assert json_response(conn, 200) == %{
"count" => 2, "count" => 2,
@ -773,8 +760,8 @@ test "`active` filters out users pending approval", %{token: token} do
"count" => 2, "count" => 2,
"page_size" => 50, "page_size" => 50,
"users" => [ "users" => [
%{"id" => ^admin_id}, %{"id" => ^user_id},
%{"id" => ^user_id} %{"id" => ^admin_id}
] ]
} = json_response(conn, 200) } = json_response(conn, 200)
end end

View File

@ -151,9 +151,9 @@ test "it returns users by actor_types" do
{:ok, [^user_service], 1} = Search.user(%{actor_types: ["Service"]}) {:ok, [^user_service], 1} = Search.user(%{actor_types: ["Service"]})
{:ok, [^user_application], 1} = Search.user(%{actor_types: ["Application"]}) {:ok, [^user_application], 1} = Search.user(%{actor_types: ["Application"]})
{:ok, [^user1, ^user2], 2} = Search.user(%{actor_types: ["Person"]}) {:ok, [^user2, ^user1], 2} = Search.user(%{actor_types: ["Person"]})
{:ok, [^user_service, ^user1, ^user2], 3} = {:ok, [^user2, ^user1, ^user_service], 3} =
Search.user(%{actor_types: ["Person", "Service"]}) Search.user(%{actor_types: ["Person", "Service"]})
end end