Combo.Inertia.Testing (combo_inertia v2.0.0)

Copy Markdown View Source

Helpers for testing Inertia responses.

Summary

Functions

Gets the Inertia component for given %Plug.Conn{}.

Gets the Inertia errors for given %Plug.Conn{}.

Gets the Inertia props for given %Plug.Conn{}.

Functions

inertia_component(conn)

@spec inertia_component(Plug.Conn.t()) :: String.t() | nil

Gets the Inertia component for given %Plug.Conn{}.

Example

use MyApp.Web.ConnCase
import Combo.Inertia.Testing

describe "GET /" do
  test "renders the home page", %{conn: conn} do
    conn = get("/")
    assert inertia_component(conn) == "Home"
  end
end

inertia_errors(conn)

@spec inertia_errors(Plug.Conn.t()) :: map()

Gets the Inertia errors for given %Plug.Conn{}.

If there are errors available in the current page props, they will be returned. Otherwise, errors that have been stored in the session will be retrieved.

Example

use MyApp.Web.ConnCase
import Combo.Inertia.Testing

describe "POST /users" do
  test "fails when name empty", %{conn: conn} do
    conn = post("/users", %{"name" => ""})

    assert %{user: %{id: 1}} = inertia_props(conn)
    assert redirected_to(conn) == "/users"
    assert inertia_errors(conn) == %{"name" => "can't be blank"}
  end
end

inertia_props(conn)

@spec inertia_props(Plug.Conn.t()) :: map() | nil

Gets the Inertia props for given %Plug.Conn{}.

Example

use MyApp.Web.ConnCase
import Combo.Inertia.Testing

describe "GET /" do
  test "renders the home page", %{conn: conn} do
    conn = get("/")
    assert %{user: %{id: 1}} = inertia_props(conn)
  end
end