Packages
swoosh
0.16.1
1.26.3
1.26.2
1.26.1
1.26.0
1.25.3
1.25.2
1.25.1
1.25.0
1.24.0
1.23.1
1.23.0
1.22.1
1.22.0
1.21.0
1.20.1
1.20.0
1.19.9
1.19.8
1.19.7
1.19.6
1.19.5
1.19.4
1.19.3
1.19.2
1.19.1
1.19.0
1.18.4
1.18.3
1.18.2
1.18.1
1.18.0
1.17.10
1.17.9
1.17.8
retired
1.17.7
retired
1.17.6
1.17.5
1.17.4
retired
1.17.3
1.17.2
1.17.1
1.17.0
1.16.12
1.16.11
1.16.10
1.16.9
1.16.8
1.16.7
1.16.6
1.16.5
1.16.4
1.16.3
1.16.2
retired
1.16.1
retired
1.16.0
1.15.3
1.15.2
1.15.1
1.15.0
1.14.4
1.14.3
1.14.2
1.14.1
1.14.0
1.13.0
1.12.0
1.11.6
1.11.5
1.11.4
1.11.3
1.11.2
1.11.1
retired
1.11.0
1.10.3
1.10.2
1.10.1
1.10.0
1.9.1
1.9.0
1.8.3
1.8.2
1.8.1
1.8.0
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.2
1.5.1
1.5.0
1.4.0
1.3.11
1.3.10
1.3.9
1.3.8
retired
1.3.7
1.3.6
retired
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.2
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.0.9
1.0.8
retired
1.0.7
retired
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.25.6
0.25.5
0.25.4
0.25.3
retired
0.25.2
0.25.1
0.25.0
0.24.4
0.24.3
0.24.2
0.24.1
0.24.0
0.23.5
0.23.4
0.23.3
0.23.2
0.23.1
0.23.0
0.22.2
0.22.1
0.22.0
0.21.1
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.1
0.16.0
0.15.0
0.14.0
0.13.0
0.12.1
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.1
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Compose, deliver and test your emails easily in Elixir. Supports SMTP, Sendgrid, Mandrill, Postmark, Mailgun and many more out of the box. Preview your emails in the browser. Test your email sending code.
Current section
Files
Jump to
Current section
Files
lib/swoosh/test_assertions.ex
defmodule Swoosh.TestAssertions do
@moduledoc ~S"""
This module contains a set of assertions functions that you can import in your
test cases.
It is meant to be used with the
[Swoosh.Adapters.Test](Swoosh.Adapters.Test.html) module.
"""
import ExUnit.Assertions
import Swoosh.Email.Format
alias Swoosh.Email
@doc ~S"""
Asserts `email` was sent.
You pass a keyword list to match on specific params.
## Examples
iex> alias Swoosh.Email
iex> import Swoosh.TestAssertions
iex> email = Email.new(subject: "Hello, Avengers!")
iex> Swoosh.Adapters.Test.deliver(email, [])
# assert a specific email was sent
iex> assert_email_sent email
# assert an email with specific field(s) was sent
iex> assert_email_sent subject: "Hello, Avengers!"
"""
def assert_email_sent(%Email{} = email) do
assert_received {:email, ^email}
end
def assert_email_sent(params) when is_list(params) do
assert_received {:email, email}
Enum.each(params, fn param -> assert_equal(email, param) end)
end
defp assert_equal(email, {:subject, value}), do: assert(email.subject == value)
defp assert_equal(email, {:from, value}), do: assert(email.from == format_recipient(value))
defp assert_equal(email, {:reply_to, value}),
do: assert(email.reply_to == format_recipient(value))
defp assert_equal(email, {:to, value}) when is_list(value),
do: assert(email.to == Enum.map(value, &format_recipient/1))
defp assert_equal(email, {:to, value}), do: assert(format_recipient(value) in email.to)
defp assert_equal(email, {:cc, value}) when is_list(value),
do: assert(email.cc == Enum.map(value, &format_recipient/1))
defp assert_equal(email, {:cc, value}), do: assert(format_recipient(value) in email.cc)
defp assert_equal(email, {:bcc, value}) when is_list(value),
do: assert(email.bcc == Enum.map(value, &format_recipient/1))
defp assert_equal(email, {:bcc, value}), do: assert(format_recipient(value) in email.bcc)
defp assert_equal(email, {:text_body, %Regex{} = value}), do: assert(email.text_body =~ value)
defp assert_equal(email, {:text_body, value}), do: assert(email.text_body == value)
defp assert_equal(email, {:html_body, %Regex{} = value}), do: assert(email.html_body =~ value)
defp assert_equal(email, {:html_body, value}), do: assert(email.html_body == value)
@doc ~S"""
Asserts `email` was not sent.
"""
def assert_email_not_sent(email) do
refute_received {:email, ^email}
end
@doc ~S"""
Asserts no emails were sent.
"""
def assert_no_email_sent() do
refute_received {:email, _}
end
end