2fd515c39cd0c9ec12917f81ed88c9b9741ce5c2
[anni] / test / mix / tasks / pleroma / count_statuses_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.CountStatusesTest do
6   # Uses log capture, has to stay synchronous
7   use Pleroma.DataCase
8
9   alias Pleroma.User
10   alias Pleroma.Web.CommonAPI
11
12   import ExUnit.CaptureIO, only: [capture_io: 1]
13   import Pleroma.Factory
14
15   test "counts statuses" do
16     user = insert(:user)
17     {:ok, _} = CommonAPI.post(user, %{status: "test"})
18     {:ok, _} = CommonAPI.post(user, %{status: "test2"})
19
20     user2 = insert(:user)
21     {:ok, _} = CommonAPI.post(user2, %{status: "test3"})
22
23     user = refresh_record(user)
24     user2 = refresh_record(user2)
25
26     assert %{note_count: 2} = user
27     assert %{note_count: 1} = user2
28
29     {:ok, user} = User.update_note_count(user, 0)
30     {:ok, user2} = User.update_note_count(user2, 0)
31
32     assert %{note_count: 0} = user
33     assert %{note_count: 0} = user2
34
35     assert capture_io(fn -> Mix.Tasks.Pleroma.CountStatuses.run([]) end) == "Done\n"
36
37     assert %{note_count: 2} = refresh_record(user)
38     assert %{note_count: 1} = refresh_record(user2)
39   end
40 end