Tests: Make as many tests as possible async.
[akkoma] / test / mix / tasks / pleroma / refresh_counter_cache_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 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