66 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
# Pleroma: A lightweight social networking server
 | 
						|
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 | 
						|
# SPDX-License-Identifier: AGPL-3.0-only
 | 
						|
 | 
						|
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:
 | 
						|
          Regex.compile!(
 | 
						|
            "here is what you've missed!"
 | 
						|
            |> Phoenix.HTML.html_escape()
 | 
						|
            |> Phoenix.HTML.safe_to_string(),
 | 
						|
            "i"
 | 
						|
          )
 | 
						|
      )
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |