1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Workers.Cron.NewUsersDigestWorkerTest do
6 use Pleroma.DataCase, async: true
9 alias Pleroma.Tests.ObanHelpers
10 alias Pleroma.Web.CommonAPI
11 alias Pleroma.Workers.Cron.NewUsersDigestWorker
14 Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config)
18 test "it sends new users digest emails" do
19 yesterday = NaiveDateTime.utc_now() |> Timex.shift(days: -1)
20 admin = insert(:user, %{is_admin: true})
21 user = insert(:user, %{inserted_at: yesterday})
22 user2 = insert(:user, %{inserted_at: yesterday})
23 CommonAPI.post(user, %{status: "cofe"})
25 NewUsersDigestWorker.perform(%Oban.Job{})
26 ObanHelpers.perform_all()
28 assert_received {:email, email}
29 assert email.to == [{admin.name, admin.email}]
30 assert email.subject == "#{Pleroma.Config.get([:instance, :name])} New Users"
32 refute email.html_body =~ admin.nickname
33 assert email.html_body =~ user.nickname
34 assert email.html_body =~ user2.nickname
35 assert email.html_body =~ "cofe"
36 assert email.html_body =~ "#{Pleroma.Web.Endpoint.url()}/static/logo.svg"
39 test "it doesn't fail when admin has no email" do
40 yesterday = NaiveDateTime.utc_now() |> Timex.shift(days: -1)
41 insert(:user, %{is_admin: true, email: nil})
42 insert(:user, %{inserted_at: yesterday})
43 user = insert(:user, %{inserted_at: yesterday})
45 CommonAPI.post(user, %{status: "cofe"})
47 NewUsersDigestWorker.perform(%Oban.Job{})
48 ObanHelpers.perform_all()