Merge remote-tracking branch 'origin/develop' into global-status-expiration
[akkoma] / test / workers / cron / digest_emails_worker_test.exs
index 66e16b81030b16f46606f62493ba77002d736ae7..5d65b9fefff931f92e92ef4509bcb4921fc80381 100644 (file)
@@ -13,7 +13,7 @@ defmodule Pleroma.Workers.Cron.DigestEmailsWorkerTest do
 
   clear_config([:email_notifications, :digest])
 
-  test "it sends digest emails" do
+  setup do
     Pleroma.Config.put([:email_notifications, :digest], %{
       active: true,
       inactivity_threshold: 7,
@@ -31,6 +31,10 @@ defmodule Pleroma.Workers.Cron.DigestEmailsWorkerTest do
     {:ok, _} = User.switch_email_notifications(user2, "digest", true)
     CommonAPI.post(user, %{"status" => "hey @#{user2.nickname}!"})
 
+    {:ok, user2: user2}
+  end
+
+  test "it sends digest emails", %{user2: user2} do
     Pleroma.Workers.Cron.DigestEmailsWorker.perform(:opts, :pid)
     # Performing job(s) enqueued at previous step
     ObanHelpers.perform_all()
@@ -39,4 +43,12 @@ defmodule Pleroma.Workers.Cron.DigestEmailsWorkerTest do
     assert email.to == [{user2.name, user2.email}]
     assert email.subject == "Your digest from #{Pleroma.Config.get(:instance)[:name]}"
   end
+
+  test "it doesn't fail when a user has no email", %{user2: user2} do
+    {:ok, _} = user2 |> Ecto.Changeset.change(%{email: nil}) |> Pleroma.Repo.update()
+
+    Pleroma.Workers.Cron.DigestEmailsWorker.perform(:opts, :pid)
+    # Performing job(s) enqueued at previous step
+    ObanHelpers.perform_all()
+  end
 end