Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 22s
- Add Phoenix.Ecto.SQL.Sandbox.allow to all start_async closures in ContactLive.Show (8 sites) and PskrSpotsLive (4 sites), fixing silent empty results when async Tasks accessed DB in tests - Add File.exists? skip-guards to wgrib2_test.exs (14 guards) and hrrr_client_test.exs (3 guards) so tests skip gracefully when GRIB2 fixtures are absent - Remove leftover debug IO.puts from SandboxHook - Fix stale homepage assertion in html_module_test.exs - Add cdo and wgrib2 to nix shell.nix and Forgejo CI apt-get install Test suite: 4049/4054 passed (99.9%), 5 remaining failures are environment gaps (cdo/wgrib2 not yet in CI runtime)
25 lines
879 B
Elixir
25 lines
879 B
Elixir
defmodule MicrowavepropWeb.SandboxHook do
|
|
@moduledoc """
|
|
Test-only `on_mount` hook that allows a LiveView's connected mount to
|
|
use the same Ecto Sandbox connection as the test that's driving it.
|
|
|
|
Only wired in when `:sql_sandbox` is set (see `config/test.exs` and
|
|
`MicrowavepropWeb.Endpoint`).
|
|
"""
|
|
import Phoenix.Component, only: [assign_new: 3]
|
|
import Phoenix.LiveView, only: [connected?: 1, get_connect_info: 2]
|
|
|
|
alias Phoenix.LiveView.Socket
|
|
|
|
@spec on_mount(atom(), map(), map(), Socket.t()) :: {:cont, Socket.t()}
|
|
def on_mount(:default, _params, _session, socket) do
|
|
socket =
|
|
assign_new(socket, :phoenix_ecto_sandbox, fn ->
|
|
if connected?(socket), do: get_connect_info(socket, :user_agent)
|
|
end)
|
|
|
|
_ = Phoenix.Ecto.SQL.Sandbox.allow(socket.assigns.phoenix_ecto_sandbox, Ecto.Adapters.SQL.Sandbox)
|
|
|
|
{:cont, socket}
|
|
end
|
|
end
|