test: Packets store_packet edge cases (nested/string-keyed data_extended)

This commit is contained in:
Graham McIntire 2026-04-24 08:10:24 -05:00
parent de521c2d71
commit 1d22e6e59b
No known key found for this signature in database
GPG key ID: F4ABF488E6029E59

View file

@ -166,6 +166,77 @@ defmodule Aprsme.PacketsTest do
end
end
describe "store_packet/1 with additional edge cases" do
test "stores a packet with string-keyed data_extended" do
packet_data = %{
sender: "STRKEY1",
base_callsign: "STRKEY1",
ssid: "0",
destination: "APRS",
raw_packet: "STRKEY1>APRS",
data_type: "position",
data_extended: %{
"latitude" => 33.0,
"longitude" => -96.0,
"symbol_table_id" => "/",
"symbol_code" => ">"
}
}
assert {:ok, packet} = Packets.store_packet(packet_data)
assert packet.sender == "STRKEY1"
end
test "stores a packet with nested position map inside data_extended" do
packet_data = %{
sender: "NESTPOS1",
base_callsign: "NESTPOS1",
ssid: "0",
destination: "APRS",
raw_packet: "NESTPOS1>APRS",
data_type: "position",
data_extended: %{
position: %{latitude: 33.0, longitude: -96.0}
}
}
assert {:ok, packet} = Packets.store_packet(packet_data)
assert packet.sender == "NESTPOS1"
end
test "device_identifier is set from destination fallback when DeviceParser returns nil" do
packet_data = %{
sender: "DEVFALL1",
base_callsign: "DEVFALL1",
ssid: "0",
destination: "APUNKNOWN",
raw_packet: "DEVFALL1>APUNKNOWN:=3950.00N/09830.00W>",
data_type: "position",
lat: 39.83,
lon: -98.5
}
assert {:ok, packet} = Packets.store_packet(packet_data)
assert is_binary(packet.device_identifier)
end
test "handles a binary lat/lon that can be parsed" do
packet_data = %{
sender: "BINCOORD1",
base_callsign: "BINCOORD1",
ssid: "0",
destination: "APRS",
raw_packet: "BINCOORD1>APRS",
data_type: "position",
lat: "39.833",
lon: "-98.5"
}
assert {:ok, packet} = Packets.store_packet(packet_data)
assert packet.sender == "BINCOORD1"
end
end
describe "store_bad_packet/2" do
test "stores bad packet from string" do
error = %{message: "Parse error", type: "ParseError"}