logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

digest_emails_worker_test.exs (1676B)


  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. defmodule Pleroma.Workers.Cron.DigestEmailsWorkerTest do
  5. use Pleroma.DataCase
  6. import Pleroma.Factory
  7. alias Pleroma.Tests.ObanHelpers
  8. alias Pleroma.User
  9. alias Pleroma.Web.CommonAPI
  10. setup do: clear_config([:email_notifications, :digest])
  11. setup do
  12. Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config)
  13. :ok
  14. end
  15. setup do
  16. clear_config([:email_notifications, :digest], %{
  17. active: true,
  18. inactivity_threshold: 7,
  19. interval: 7
  20. })
  21. user = insert(:user)
  22. date =
  23. Timex.now()
  24. |> Timex.shift(days: -10)
  25. |> Timex.to_naive_datetime()
  26. user2 = insert(:user, last_digest_emailed_at: date)
  27. {:ok, _} = User.switch_email_notifications(user2, "digest", true)
  28. CommonAPI.post(user, %{status: "hey @#{user2.nickname}!"})
  29. {:ok, user2: user2}
  30. end
  31. test "it sends digest emails", %{user2: user2} do
  32. Pleroma.Workers.Cron.DigestEmailsWorker.perform(%Oban.Job{})
  33. # Performing job(s) enqueued at previous step
  34. ObanHelpers.perform_all()
  35. assert_received {:email, email}
  36. assert email.to == [{user2.name, user2.email}]
  37. assert email.subject == "Your digest from #{Pleroma.Config.get(:instance)[:name]}"
  38. end
  39. test "it doesn't fail when a user has no email", %{user2: user2} do
  40. {:ok, _} = user2 |> Ecto.Changeset.change(%{email: nil}) |> Pleroma.Repo.update()
  41. Pleroma.Workers.Cron.DigestEmailsWorker.perform(%Oban.Job{})
  42. # Performing job(s) enqueued at previous step
  43. ObanHelpers.perform_all()
  44. end
  45. end