33 lines
1 KiB
Elixir
33 lines
1 KiB
Elixir
defmodule Mv.Membership.JoinRequestSubmitEmailFailureTest do
|
|
@moduledoc """
|
|
Tests that when join confirmation email delivery fails, the domain returns
|
|
{:error, :email_delivery_failed} (and the LiveView shows an error). Uses
|
|
FailingMailAdapter to simulate delivery failure; async: false to avoid config races.
|
|
"""
|
|
use Mv.DataCase, async: false
|
|
|
|
alias Mv.Membership
|
|
|
|
@valid_submit_attrs %{
|
|
email: "fail#{System.unique_integer([:positive])}@example.com"
|
|
}
|
|
|
|
test "submit_join_request returns {:error, :email_delivery_failed} when mail delivery fails" do
|
|
saved = Application.get_env(:mv, Mv.Mailer)
|
|
|
|
Application.put_env(
|
|
:mv,
|
|
Mv.Mailer,
|
|
Keyword.put(saved || [], :adapter, Mv.TestSupport.FailingMailAdapter)
|
|
)
|
|
|
|
on_exit(fn ->
|
|
Application.put_env(:mv, Mv.Mailer, saved)
|
|
end)
|
|
|
|
token = "fail-token-#{System.unique_integer([:positive])}"
|
|
attrs = Map.put(@valid_submit_attrs, :confirmation_token, token)
|
|
|
|
assert {:error, :email_delivery_failed} = Membership.submit_join_request(attrs, actor: nil)
|
|
end
|
|
end
|