Browse Source

Merge branch 'admin-api-users-sort' into 'develop'

AdminAPI: sort new users at the top

Closes #2709

See merge request pleroma/pleroma!3481
features/ingestion-listen
feld 2 years ago
parent
commit
3f58213646
4 changed files with 59 additions and 71 deletions
  1. +1
    -0
      CHANGELOG.md
  2. +1
    -1
      lib/pleroma/web/admin_api/search.ex
  3. +55
    -68
      test/pleroma/web/admin_api/controllers/user_controller_test.exs
  4. +2
    -2
      test/pleroma/web/admin_api/search_test.exs

+ 1
- 0
CHANGELOG.md View File

@@ -14,6 +14,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- HTTPSecurityPlug now sends a response header to opt out of Google's FLoC (Federated Learning of Cohorts) targeted advertising.
- Email address is now returned if requesting user is the owner of the user account so it can be exposed in client and FE user settings UIs.
- Improved Twittercard and OpenGraph meta tag generation including thumbnails and image dimension metadata when available.
- AdminAPI: sort users so the newest are at the top.
- ActivityPub Client-to-Server(C2S): Limitation on the type of Activity/Object are lifted as they are now passed through ObjectValidators

### Added


+ 1
- 1
lib/pleroma/web/admin_api/search.ex View File

@@ -17,7 +17,7 @@ defmodule Pleroma.Web.AdminAPI.Search do
|> Map.drop([:page, :page_size])
|> Map.put(:invisible, false)
|> User.Query.build()
|> order_by([u], u.nickname)
|> order_by(desc: :id)

paginated_query =
User.Query.paginate(query, params[:page] || 1, params[:page_size] || @page_size)


+ 55
- 68
test/pleroma/web/admin_api/controllers/user_controller_test.exs View File

@@ -384,24 +384,22 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do

conn = get(conn, "/api/pleroma/admin/users?page=1")

users =
[
user_response(
admin,
%{"roles" => %{"admin" => true, "moderator" => false}}
),
user_response(user, %{"local" => false, "tags" => ["foo", "bar"]}),
user_response(
user2,
%{
"local" => true,
"is_approved" => false,
"registration_reason" => "I'm a chill dude",
"actor_type" => "Person"
}
)
]
|> Enum.sort_by(& &1["nickname"])
users = [
user_response(
user2,
%{
"local" => true,
"is_approved" => false,
"registration_reason" => "I'm a chill dude",
"actor_type" => "Person"
}
),
user_response(user, %{"local" => false, "tags" => ["foo", "bar"]}),
user_response(
admin,
%{"roles" => %{"admin" => true, "moderator" => false}}
)
]

assert json_response_and_validate_schema(conn, 200) == %{
"count" => 3,
@@ -525,7 +523,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
assert json_response_and_validate_schema(conn1, 200) == %{
"count" => 2,
"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")
@@ -533,7 +531,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
assert json_response_and_validate_schema(conn2, 200) == %{
"count" => 2,
"page_size" => 1,
"users" => [user_response(user2)]
"users" => [user_response(user)]
}
end

@@ -565,18 +563,16 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do

conn = get(conn, "/api/pleroma/admin/users?filters=local")

users =
[
user_response(user),
user_response(admin, %{
"roles" => %{"admin" => true, "moderator" => false}
}),
user_response(old_admin, %{
"is_active" => true,
"roles" => %{"admin" => true, "moderator" => false}
})
]
|> Enum.sort_by(& &1["nickname"])
users = [
user_response(user),
user_response(admin, %{
"roles" => %{"admin" => true, "moderator" => false}
}),
user_response(old_admin, %{
"is_active" => true,
"roles" => %{"admin" => true, "moderator" => false}
})
]

assert json_response_and_validate_schema(conn, 200) == %{
"count" => 3,
@@ -604,7 +600,6 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
"is_approved" => true
})
end)
|> Enum.sort_by(& &1["nickname"])

assert result == %{"count" => 2, "page_size" => 50, "users" => users}
end
@@ -642,18 +637,16 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do

conn = get(conn, "/api/pleroma/admin/users?filters=is_admin")

users =
[
user_response(admin, %{
"is_active" => true,
"roles" => %{"admin" => true, "moderator" => false}
}),
user_response(second_admin, %{
"is_active" => true,
"roles" => %{"admin" => true, "moderator" => false}
})
]
|> Enum.sort_by(& &1["nickname"])
users = [
user_response(second_admin, %{
"is_active" => true,
"roles" => %{"admin" => true, "moderator" => false}
}),
user_response(admin, %{
"is_active" => true,
"roles" => %{"admin" => true, "moderator" => false}
})
]

assert json_response_and_validate_schema(conn, 200) == %{
"count" => 2,
@@ -693,13 +686,11 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
|> get(user_path(conn, :index), %{actor_types: ["Person"]})
|> json_response_and_validate_schema(200)

users =
[
user_response(admin, %{"roles" => %{"admin" => true, "moderator" => false}}),
user_response(user1),
user_response(user2)
]
|> Enum.sort_by(& &1["nickname"])
users = [
user_response(user2),
user_response(user1),
user_response(admin, %{"roles" => %{"admin" => true, "moderator" => false}})
]

assert response == %{"count" => 3, "page_size" => 50, "users" => users}
end
@@ -716,14 +707,12 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
|> get(user_path(conn, :index), %{actor_types: ["Person", "Service"]})
|> json_response_and_validate_schema(200)

users =
[
user_response(admin, %{"roles" => %{"admin" => true, "moderator" => false}}),
user_response(user1),
user_response(user2),
user_response(user_service, %{"actor_type" => "Service"})
]
|> Enum.sort_by(& &1["nickname"])
users = [
user_response(user2),
user_response(user1),
user_response(user_service, %{"actor_type" => "Service"}),
user_response(admin, %{"roles" => %{"admin" => true, "moderator" => false}})
]

assert response == %{"count" => 4, "page_size" => 50, "users" => users}
end
@@ -752,12 +741,10 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do

conn = get(conn, "/api/pleroma/admin/users?tags[]=first&tags[]=second")

users =
[
user_response(user1, %{"tags" => ["first"]}),
user_response(user2, %{"tags" => ["second"]})
]
|> Enum.sort_by(& &1["nickname"])
users = [
user_response(user2, %{"tags" => ["second"]}),
user_response(user1, %{"tags" => ["first"]})
]

assert json_response_and_validate_schema(conn, 200) == %{
"count" => 2,
@@ -781,8 +768,8 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
"count" => 2,
"page_size" => 50,
"users" => [
%{"id" => ^admin_id},
%{"id" => ^user_id}
%{"id" => ^user_id},
%{"id" => ^admin_id}
]
} = json_response_and_validate_schema(conn, 200)
end


+ 2
- 2
test/pleroma/web/admin_api/search_test.exs View File

@@ -151,9 +151,9 @@ defmodule Pleroma.Web.AdminAPI.SearchTest do

{:ok, [^user_service], 1} = Search.user(%{actor_types: ["Service"]})
{: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"]})
end



Loading…
Cancel
Save