summaryrefslogtreecommitdiff
path: root/test/tasks/digest_test.exs
blob: 0b444c86d8e9dd36469abe5f5ed5d6eb46cf4151 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
defmodule Mix.Tasks.Pleroma.DigestTest do
  use Pleroma.DataCase

  import Pleroma.Factory
  import Swoosh.TestAssertions

  alias Pleroma.Tests.ObanHelpers
  alias Pleroma.Web.CommonAPI

  setup_all do
    Mix.shell(Mix.Shell.Process)

    on_exit(fn ->
      Mix.shell(Mix.Shell.IO)
    end)

    :ok
  end

  setup do: clear_config([Pleroma.Emails.Mailer, :enabled], true)

  describe "pleroma.digest test" do
    test "Sends digest to the given user" do
      user1 = insert(:user)
      user2 = insert(:user)

      Enum.each(0..10, fn i ->
        {:ok, _activity} =
          CommonAPI.post(user1, %{
            status: "hey ##{i} @#{user2.nickname}!"
          })
      end)

      yesterday =
        NaiveDateTime.add(
          NaiveDateTime.truncate(NaiveDateTime.utc_now(), :second),
          -60 * 60 * 24,
          :second
        )

      {:ok, yesterday_date} = Timex.format(yesterday, "%F", :strftime)

      :ok = Mix.Tasks.Pleroma.Digest.run(["test", user2.nickname, yesterday_date])

      ObanHelpers.perform_all()

      assert_receive {:mix_shell, :info, [message]}
      assert message =~ "Digest email have been sent"

      assert_email_sent(
        to: {user2.name, user2.email},
        html_body: ~r/here is what you've missed!/i
      )
    end
  end
end