PhoenixTestOnly
Compile-time conditional plug and on_mount for test-only modules.
Phoenix's plug and on_mount macros accumulate module attributes at the top level. When wrapped in if Application.compile_env(...), the call ends up inside a case node in the AST and Phoenix silently ignores it.
These macros move the check to macro expansion time: they only emit code when Mix.env() == :test. In a release (where Mix isn't loaded) or in dev/prod, nothing is emitted.
Installation
{:phoenix_test_only, "~> 0.2"}Usage
# endpoint.ex
import PhoenixTestOnly
plug_if_test Phoenix.Ecto.SQL.Sandbox
plug_if_test Wallabidi.Sandbox.Plug
# your_app_web.ex
def live_view do
quote do
use Phoenix.LiveView
import PhoenixTestOnly
on_mount_if_test Wallabidi.Sandbox.Hook
end
endLicense
MIT