towerops/test/towerops_web/live/device_live/show_smoke_test.exs

57 lines
1.7 KiB
Elixir

defmodule ToweropsWeb.DeviceLive.ShowSmokeTest do
@moduledoc """
Smoke test for DeviceLive.Show, SiteLive.Show, and DeviceLive.Form mount paths.
Mount is expected to succeed or redirect (e.g. scope mismatch). Both outcomes
still exercise the parameter-resolving code paths.
"""
use ToweropsWeb.ConnCase, async: true
import Phoenix.LiveViewTest
setup :register_and_log_in_user
setup %{user: user} do
{:ok, org} = Towerops.Organizations.create_organization(%{name: "Smoke Dev Org"}, user.id)
{:ok, site} =
Towerops.Sites.create_site(%{
name: "Site #{System.unique_integer([:positive])}",
organization_id: org.id
})
device =
Towerops.DevicesFixtures.device_fixture(%{
organization_id: org.id,
site_id: site.id,
name: "SmokeDev"
})
%{org: org, site: site, device: device}
end
defp assert_mount_or_redirect(result) do
assert Enum.any?([
match?({:ok, _, _}, result),
match?({:error, {:redirect, _}}, result),
match?({:error, {:live_redirect, _}}, result)
])
end
describe "GET /devices/:id" do
test "mount attempt succeeds or redirects", %{conn: conn, device: device} do
assert_mount_or_redirect(live(conn, ~p"/devices/#{device.id}"))
end
end
describe "GET /devices/:id/edit" do
test "mount attempt succeeds or redirects", %{conn: conn, device: device} do
assert_mount_or_redirect(live(conn, ~p"/devices/#{device.id}/edit"))
end
end
describe "GET /sites/:id" do
test "mount attempt succeeds or redirects", %{conn: conn, site: site} do
assert_mount_or_redirect(live(conn, ~p"/sites/#{site.id}"))
end
end
end