Apply Testing LiveView course patterns (live/2, has_element?, render_click, form/3). Add tests for MobileQRLive, WeathermapLive, StatusPageLive, controllers, plugs, and pure function modules. Expand proto decode coverage to 85.24%.
64 lines
1.6 KiB
Elixir
64 lines
1.6 KiB
Elixir
defmodule ToweropsWeb.WeathermapLiveTest do
|
|
use ToweropsWeb.ConnCase, async: true
|
|
|
|
import Phoenix.LiveViewTest
|
|
|
|
setup :register_and_log_in_user
|
|
|
|
setup %{user: user} do
|
|
{:ok, organization} = Towerops.Organizations.create_organization(%{name: "Weathermap Org"}, user.id)
|
|
%{organization: organization}
|
|
end
|
|
|
|
describe "mount" do
|
|
test "renders weathermap page", %{conn: conn} do
|
|
{:ok, _view, html} = live(conn, ~p"/weathermap")
|
|
assert html =~ "Weathermap"
|
|
end
|
|
end
|
|
|
|
describe "handle_event" do
|
|
test "set_filter does not crash", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
|
|
render_click(view, "set_filter", %{"filter" => "wired"})
|
|
|
|
assert render(view)
|
|
end
|
|
|
|
test "search does not crash", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
|
|
render_click(view, "search", %{"query" => "router"})
|
|
|
|
assert render(view)
|
|
end
|
|
|
|
test "toggle_layout does not crash", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
|
|
render_click(view, "toggle_layout", %{"mode" => "hierarchical"})
|
|
|
|
assert render(view)
|
|
end
|
|
|
|
test "close_detail_panel does not crash", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
|
|
render_click(view, "close_detail_panel", %{})
|
|
|
|
assert render(view)
|
|
end
|
|
end
|
|
|
|
describe "handle_info" do
|
|
test "refresh_data does not crash", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
|
|
send(view.pid, :refresh_data)
|
|
Process.sleep(50)
|
|
|
|
assert render(view)
|
|
end
|
|
end
|
|
end
|