test: Packets store_packet edge cases (nested/string-keyed data_extended)
This commit is contained in:
parent
de521c2d71
commit
1d22e6e59b
1 changed files with 71 additions and 0 deletions
|
|
@ -166,6 +166,77 @@ defmodule Aprsme.PacketsTest do
|
||||||
end
|
end
|
||||||
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
|
describe "store_bad_packet/2" do
|
||||||
test "stores bad packet from string" do
|
test "stores bad packet from string" do
|
||||||
error = %{message: "Parse error", type: "ParseError"}
|
error = %{message: "Parse error", type: "ParseError"}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue