diff --git a/test/aprsme_web/live/map_live/integration_test.exs b/test/aprsme_web/live/map_live/integration_test.exs new file mode 100644 index 0000000..0dee1af --- /dev/null +++ b/test/aprsme_web/live/map_live/integration_test.exs @@ -0,0 +1,83 @@ +defmodule AprsmeWeb.MapLive.IntegrationTest do + use AprsmeWeb.ConnCase + + import Aprsme.PacketsFixtures + import Phoenix.LiveViewTest + + describe "MapLive.Index with real packet data" do + test "renders a map with pre-existing packets and simulates bounds_changed", %{conn: conn} do + # Seed some packets in the bounds we'll scroll to. + now = DateTime.utc_now() + + for i <- 1..3 do + packet_fixture(%{ + sender: "INT#{i}", + base_callsign: "INT#{i}", + ssid: "0", + received_at: DateTime.add(now, -i * 60, :second), + lat: Decimal.new("#{40 + i * 0.01}"), + lon: Decimal.new("#{-74 - i * 0.01}"), + has_position: true, + path: "WIDE1-1" + }) + end + + {:ok, view, _html} = live(conn, "/?lat=40.0&lng=-74.0&z=11", on_error: :warn) + + # Fire a bounds_changed event covering the seeded region. + bounds = %{ + "bounds" => %{ + "north" => 41.0, + "south" => 39.5, + "east" => -73.0, + "west" => -74.5 + } + } + + assert render_hook(view, "bounds_changed", bounds) + assert render_hook(view, "map_ready", %{}) + + # Allow async historical loading to run. + Process.sleep(100) + html = render(view) + assert html =~ "aprs-map" + end + + test "tracks a callsign that has a real packet", %{conn: conn} do + _packet = + packet_fixture(%{ + sender: "TRACKME", + base_callsign: "TRACKME", + ssid: "0", + received_at: DateTime.utc_now(), + lat: Decimal.new("33.0"), + lon: Decimal.new("-96.5"), + has_position: true, + path: "WIDE1-1" + }) + + {:ok, view, _html} = live(conn, "/?call=TRACKME", on_error: :warn) + assert render_hook(view, "map_ready", %{}) + Process.sleep(100) + html = render(view) + assert html =~ "TRACKME" or html =~ "aprs-map" + end + + test "callsign path route loads the tracked callsign", %{conn: conn} do + _packet = + packet_fixture(%{ + sender: "PATH1", + base_callsign: "PATH1", + ssid: "0", + received_at: DateTime.utc_now(), + lat: Decimal.new("35.0"), + lon: Decimal.new("-90.0"), + has_position: true, + path: "WIDE1-1" + }) + + {:ok, _view, html} = live(conn, "/PATH1", on_error: :warn) + assert html =~ "aprs-map" + end + end +end