First
[anni] / test / mix / tasks / pleroma / digest_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.DigestTest do
6   use Pleroma.DataCase
7
8   import Pleroma.Factory
9   import Swoosh.TestAssertions
10
11   alias Pleroma.Tests.ObanHelpers
12   alias Pleroma.Web.CommonAPI
13
14   setup_all do
15     Mix.shell(Mix.Shell.Process)
16
17     on_exit(fn ->
18       Mix.shell(Mix.Shell.IO)
19     end)
20
21     :ok
22   end
23
24   setup do: clear_config([Pleroma.Emails.Mailer, :enabled], true)
25
26   describe "pleroma.digest test" do
27     test "Sends digest to the given user" do
28       user1 = insert(:user)
29       user2 = insert(:user)
30
31       Enum.each(0..10, fn i ->
32         {:ok, _activity} =
33           CommonAPI.post(user1, %{
34             status: "hey ##{i} @#{user2.nickname}!"
35           })
36       end)
37
38       yesterday =
39         NaiveDateTime.add(
40           NaiveDateTime.truncate(NaiveDateTime.utc_now(), :second),
41           -60 * 60 * 24,
42           :second
43         )
44
45       {:ok, yesterday_date} = Timex.format(yesterday, "%F", :strftime)
46
47       :ok = Mix.Tasks.Pleroma.Digest.run(["test", user2.nickname, yesterday_date])
48
49       ObanHelpers.perform_all()
50
51       assert_receive {:mix_shell, :info, [message]}
52       assert message =~ "Digest email have been sent"
53
54       assert_email_sent(
55         to: {user2.name, user2.email},
56         html_body:
57           Regex.compile!(
58             "here is what you've missed!"
59             |> Phoenix.HTML.html_escape()
60             |> Phoenix.HTML.safe_to_string(),
61             "i"
62           )
63       )
64     end
65   end
66 end