119 lines
3 KiB
Elixir
119 lines
3 KiB
Elixir
defmodule Aprsme.Integration.HistoricalPacketsTest do
|
|
use AprsmeWeb.ConnCase
|
|
|
|
setup do
|
|
Mox.set_mox_global()
|
|
Application.put_env(:aprsme, :packets_module, PacketsMock)
|
|
on_exit(fn -> Mox.set_mox_private() end)
|
|
:ok
|
|
end
|
|
|
|
describe "historical packet loading" do
|
|
setup do
|
|
# Create test packets with different timestamps
|
|
now = DateTime.utc_now()
|
|
one_hour_ago = DateTime.add(now, -3600, :second)
|
|
thirty_minutes_ago = DateTime.add(now, -1800, :second)
|
|
ten_minutes_ago = DateTime.add(now, -600, :second)
|
|
|
|
# Mock packet data for the same callsign at different times
|
|
packet1 = %Aprsme.Packet{
|
|
id: 1,
|
|
base_callsign: "TEST1",
|
|
ssid: 0,
|
|
has_position: true,
|
|
lat: 39.8,
|
|
lon: -98.5,
|
|
received_at: one_hour_ago,
|
|
data_extended: %{
|
|
symbol_table_id: "/",
|
|
symbol_code: ">",
|
|
comment: "Old position"
|
|
}
|
|
}
|
|
|
|
packet2 = %Aprsme.Packet{
|
|
id: 2,
|
|
base_callsign: "TEST1",
|
|
ssid: 0,
|
|
has_position: true,
|
|
lat: 39.9,
|
|
lon: -98.4,
|
|
received_at: thirty_minutes_ago,
|
|
data_extended: %{
|
|
symbol_table_id: "/",
|
|
symbol_code: ">",
|
|
comment: "Middle position"
|
|
}
|
|
}
|
|
|
|
packet3 = %Aprsme.Packet{
|
|
id: 3,
|
|
base_callsign: "TEST1",
|
|
ssid: 0,
|
|
has_position: true,
|
|
lat: 40.0,
|
|
lon: -98.3,
|
|
received_at: ten_minutes_ago,
|
|
data_extended: %{
|
|
symbol_table_id: "/",
|
|
symbol_code: ">",
|
|
comment: "Latest position"
|
|
}
|
|
}
|
|
|
|
# Mock packet for different callsign
|
|
packet4 = %Aprsme.Packet{
|
|
id: 4,
|
|
base_callsign: "TEST2",
|
|
ssid: 0,
|
|
has_position: true,
|
|
lat: 38.8,
|
|
lon: -97.5,
|
|
received_at: thirty_minutes_ago,
|
|
data_extended: %{
|
|
symbol_table_id: "/",
|
|
symbol_code: "k",
|
|
comment: "Different station"
|
|
}
|
|
}
|
|
|
|
{:ok, packets: [packet1, packet2, packet3, packet4]}
|
|
end
|
|
|
|
# Removed tests:
|
|
# - loads all historical packets at once when map is ready
|
|
# - only loads packets within map bounds
|
|
# - handles empty historical packets gracefully
|
|
# - clears historical packets when requested
|
|
# - handles locate_me event after historical packets are loaded
|
|
end
|
|
|
|
describe "live packet updates with historical data" do
|
|
setup do
|
|
# Create a historical packet
|
|
now = DateTime.utc_now()
|
|
thirty_minutes_ago = DateTime.add(now, -1800, :second)
|
|
|
|
historical_packet = %Aprsme.Packet{
|
|
id: 100,
|
|
base_callsign: "LIVE1",
|
|
ssid: 0,
|
|
has_position: true,
|
|
lat: 39.8,
|
|
lon: -98.5,
|
|
received_at: thirty_minutes_ago,
|
|
data_extended: %{
|
|
symbol_table_id: "/",
|
|
symbol_code: ">",
|
|
comment: "Old position"
|
|
}
|
|
}
|
|
|
|
{:ok, historical_packet: historical_packet}
|
|
end
|
|
|
|
# Removed test:
|
|
# - new live packet updates marker for same callsign
|
|
end
|
|
end
|