move to 2.5.5
[anni] / test / pleroma / web / mastodon_api / controllers / directory_controller_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.MastodonAPI.DirectoryControllerTest do
6   use Pleroma.Web.ConnCase, async: true
7   alias Pleroma.Web.CommonAPI
8   import Pleroma.Factory
9
10   test "GET /api/v1/directory with :profile_directory disabled returns empty array", %{conn: conn} do
11     clear_config([:instance, :profile_directory], false)
12
13     insert(:user, is_discoverable: true)
14     insert(:user, is_discoverable: true)
15
16     result =
17       conn
18       |> get("/api/v1/directory")
19       |> json_response_and_validate_schema(200)
20
21     assert result == []
22   end
23
24   test "GET /api/v1/directory returns discoverable users only", %{conn: conn} do
25     %{id: user_id} = insert(:user, is_discoverable: true)
26     insert(:user, is_discoverable: false)
27
28     result =
29       conn
30       |> get("/api/v1/directory")
31       |> json_response_and_validate_schema(200)
32
33     assert [%{"id" => ^user_id}] = result
34   end
35
36   test "GET /api/v1/directory returns users sorted by most recent statuses", %{conn: conn} do
37     insert(:user, is_discoverable: true)
38     %{id: user_id} = user = insert(:user, is_discoverable: true)
39     insert(:user, is_discoverable: true)
40
41     {:ok, _activity} = CommonAPI.post(user, %{status: "yay i'm discoverable"})
42
43     result =
44       conn
45       |> get("/api/v1/directory?order=active")
46       |> json_response_and_validate_schema(200)
47
48     assert [%{"id" => ^user_id} | _tail] = result
49   end
50 end