66ffba40b58018ccfbe1dfe9ff0b5b08607d24b3
[anni] / test / mix / tasks / pleroma / refresh_counter_cache_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 Mix.Tasks.Pleroma.RefreshCounterCacheTest do
6   # Uses log capture, has to stay synchronous
7   use Pleroma.DataCase
8   alias Pleroma.Web.CommonAPI
9   import ExUnit.CaptureIO, only: [capture_io: 1]
10   import Pleroma.Factory
11
12   test "counts statuses" do
13     user = insert(:user)
14     other_user = insert(:user)
15
16     CommonAPI.post(user, %{visibility: "public", status: "hey"})
17
18     Enum.each(0..1, fn _ ->
19       CommonAPI.post(user, %{
20         visibility: "unlisted",
21         status: "hey"
22       })
23     end)
24
25     Enum.each(0..2, fn _ ->
26       CommonAPI.post(user, %{
27         visibility: "direct",
28         status: "hey @#{other_user.nickname}"
29       })
30     end)
31
32     Enum.each(0..3, fn _ ->
33       CommonAPI.post(user, %{
34         visibility: "private",
35         status: "hey"
36       })
37     end)
38
39     assert capture_io(fn -> Mix.Tasks.Pleroma.RefreshCounterCache.run([]) end) =~ "Done\n"
40
41     assert %{"direct" => 3, "private" => 4, "public" => 1, "unlisted" => 2} =
42              Pleroma.Stats.get_status_visibility_count()
43   end
44 end