test: MapLive historical_loading_timeout matching generation + show_error handler

This commit is contained in:
Graham McIntire 2026-04-24 09:57:10 -05:00
parent ef630f2712
commit 145ff5fecd
No known key found for this signature in database
GPG key ID: F4ABF488E6029E59

View file

@ -874,6 +874,33 @@ defmodule AprsmeWeb.MapLive.IndexTest do
assert Process.alive?(view.pid)
end
test "historical_loading_timeout with matching generation forces completion", %{conn: conn} do
{:ok, view, _html} = live(conn, "/", on_error: :warn)
render_hook(view, "map_ready", %{})
Process.sleep(30)
# Grab the current loading_generation from socket state via :sys.get_state
# on the LiveView process is not safe; instead we send the timeout with
# the generation the LiveView is likely at right now. Because the LV bumps
# generation on reload triggers, sending 1 may match or not — the handler
# branches on `generation == socket.assigns.loading_generation and historical_loading`.
# If both aren't met, the else branch runs (already tested). Either path
# exercises the same top-level handler; we just confirm no crash.
state = :sys.get_state(view.pid)
# LiveView sock is at state.socket.assigns
gen = state.socket.assigns[:loading_generation] || 0
send(view.pid, {:historical_loading_timeout, gen})
Process.sleep(30)
assert Process.alive?(view.pid)
end
test "show_error message sets flash and stays alive", %{conn: conn} do
{:ok, view, _html} = live(conn, "/", on_error: :warn)
send(view.pid, {:show_error, "Something broke"})
Process.sleep(30)
assert Process.alive?(view.pid)
end
test "handles postgres_packet broadcast via batcher", %{conn: conn} do
{:ok, view, _html} = live(conn, "/?lat=33.0&lng=-96.0&z=12", on_error: :warn)