defmodule Heyya do
@moduledoc """
`Heyya` allows for fast snapshot
testing of Phoenix components. Snapshot testing
components is a fast and easy way to ensure that
they work and produce what they expected to
produce without having to hand write
assertions.
"""
@doc """
Wire up the module to prepare for snapshot testing.
"""
defmacro __using__(_opts) do
quote do
use ExUnit.Case
use Snapshy
import Phoenix.Component, except: [link: 1]
import Phoenix.LiveViewTest
import Heyya,
only: [component_snapshot_test: 2, component_snapshot_test: 3]
end
end
@doc """
A named component snapshot test
"""
defmacro component_snapshot_test(name, do: expr) do
quote do
test unquote(name) do
match_snapshot(rendered_to_string(unquote(expr)))
end
end
end
@doc """
A named component snapshot test, where context is passed through.
"""
defmacro component_snapshot_test(name, context, do: expr) do
quote do
test unquote(name), unquote(context) do
match_snapshot(rendered_to_string(unquote(expr)))
end
end
end
end