- Fix doctests for Accounts, Agents.Stats, Snmp to match actual behavior - Fix dynamic_extra_test vendor post-processing tests to seed sensor data - Fix activity_controller_test to seed devices for feed data - Fix session_manager_test to create browser session for test - Fix topology_test link creation for connection test - Fix device_monitor/driver_worker tests for unique job constraints - Fix accounts_test expired_tokens assertion (magic link token is expired) - Fix happy_path_test and show_events_test to seed monitor data - Fix admin user_live_test user.name -> user.email (no name field) - Fix schema_test to seed activity data - Fix mobile_qr_live_test to match actual template text - Fix SnmpKit.MIB doctests and tests for enriched return values - Fix onboarding_live, mobile_controller, mib_test weak assertions - Remove dead code and fix credo warnings
74 lines
2.6 KiB
Elixir
74 lines
2.6 KiB
Elixir
defmodule ToweropsWeb.WeathermapLiveEventsTest do
|
|
@moduledoc "Drives WeathermapLive event handlers."
|
|
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: "Weather Org"}, user.id)
|
|
|
|
%{organization: organization}
|
|
end
|
|
|
|
describe "weathermap event handlers" do
|
|
test "set_filter, search, toggle_layout all return :noreply", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
|
|
_ = render_hook(view, "set_filter", %{"filter" => "high"})
|
|
_ = render_hook(view, "search", %{"query" => "router"})
|
|
_ = render_hook(view, "toggle_layout", %{"mode" => "hierarchical"})
|
|
_ = render_hook(view, "close_detail_panel", %{})
|
|
assert Process.alive?(view.pid)
|
|
end
|
|
|
|
@tag :skip
|
|
test "node_clicked with unknown node returns :noreply", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
assert render_hook(view, "node_clicked", %{"id" => "unknown"}) =~ "weathermap"
|
|
end
|
|
|
|
test "toggle_fullscreen pushes URL change", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
result = render_hook(view, "toggle_fullscreen", %{})
|
|
assert match?({:error, {:live_redirect, %{to: _}}}, result)
|
|
end
|
|
|
|
test "fullscreen=true URL param is reflected by the LiveView", %{conn: conn} do
|
|
assert {:ok, _view, _html} = live(conn, ~p"/weathermap?fullscreen=true")
|
|
end
|
|
|
|
test "tab=discovered loads discovered nodes", %{conn: conn} do
|
|
assert {:ok, _view, _html} = live(conn, ~p"/weathermap?tab=discovered")
|
|
end
|
|
|
|
test "node_clicked with non-existent node id is a no-op", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
|
|
assert render_hook(view, "node_clicked", %{
|
|
"node_id" => Ecto.UUID.generate(),
|
|
"node_type" => "managed"
|
|
})
|
|
end
|
|
|
|
test "handle_info :refresh_data triggers a re-render", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
send(view.pid, :refresh_data)
|
|
assert render(view)
|
|
end
|
|
|
|
test "handle_info {:topology_updated, _} triggers a re-render", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
send(view.pid, {:topology_updated, Ecto.UUID.generate()})
|
|
assert render(view)
|
|
end
|
|
|
|
test "handle_info {:capacity_updated, _} triggers a re-render", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/weathermap")
|
|
send(view.pid, {:capacity_updated, Ecto.UUID.generate()})
|
|
assert render(view)
|
|
end
|
|
end
|
|
end
|