defmodule Aprsme.Accounts.UserNotifierTest do use ExUnit.Case, async: true import Swoosh.TestAssertions alias Aprsme.Accounts.UserNotifier defp user, do: %{email: "test@example.com"} describe "deliver_confirmation_instructions/2" do test "sends a confirmation email with the URL embedded in the body" do assert {:ok, email} = UserNotifier.deliver_confirmation_instructions(user(), "https://aprs.me/confirm/abc") assert email.subject == "Confirmation instructions" assert email.to == [{"", "test@example.com"}] assert email.text_body =~ "You can confirm your account" assert email.text_body =~ "https://aprs.me/confirm/abc" assert_email_sent(email) end end describe "deliver_reset_password_instructions/2" do test "sends a password reset email with the URL embedded in the body" do assert {:ok, email} = UserNotifier.deliver_reset_password_instructions(user(), "https://aprs.me/reset/xyz") assert email.subject == "Reset password instructions" assert email.text_body =~ "reset your password" assert email.text_body =~ "https://aprs.me/reset/xyz" end end describe "deliver_update_email_instructions/2" do test "sends an update-email email with the URL embedded in the body" do assert {:ok, email} = UserNotifier.deliver_update_email_instructions(user(), "https://aprs.me/update/123") assert email.subject == "Update email instructions" assert email.text_body =~ "change your email" assert email.text_body =~ "https://aprs.me/update/123" end end end