Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
57 lines
1.8 KiB
Elixir
57 lines
1.8 KiB
Elixir
defmodule Aprsme.Workers.PacketCleanupWorkerTest do
|
|
use Aprsme.DataCase, async: false
|
|
|
|
alias Aprsme.BadPacket
|
|
alias Aprsme.Workers.PacketCleanupWorker
|
|
|
|
describe "perform/1 without cleanup_days" do
|
|
test "cleans up expired bad packets" do
|
|
# Create an old bad packet
|
|
retention_days = Application.get_env(:aprsme, :packet_retention_days, 7)
|
|
|
|
old_time =
|
|
DateTime.utc_now()
|
|
|> DateTime.add(-(retention_days + 10) * 86_400, :second)
|
|
|> DateTime.truncate(:microsecond)
|
|
|
|
Repo.insert!(%BadPacket{raw_packet: "bad", error_message: "test", attempted_at: old_time})
|
|
|
|
# Create a recent bad packet
|
|
recent_time =
|
|
DateTime.utc_now()
|
|
|> DateTime.add(-3600, :second)
|
|
|> DateTime.truncate(:microsecond)
|
|
|
|
Repo.insert!(%BadPacket{raw_packet: "recent_bad", error_message: "test", attempted_at: recent_time})
|
|
|
|
assert :ok = PacketCleanupWorker.perform(%{})
|
|
|
|
# Only recent bad packet should remain
|
|
assert Repo.aggregate(BadPacket, :count) == 1
|
|
end
|
|
end
|
|
|
|
describe "perform/1 with negative cleanup_days" do
|
|
test "falls through to default perform and succeeds" do
|
|
assert :ok = PacketCleanupWorker.perform(%{"cleanup_days" => -1})
|
|
end
|
|
end
|
|
|
|
describe "perform/1 with extra fields that the guard ignores" do
|
|
test "accepts a map with cleanup_days plus unrelated keys" do
|
|
assert :ok =
|
|
PacketCleanupWorker.perform(%{
|
|
"cleanup_days" => 30,
|
|
"random_field" => "ignored"
|
|
})
|
|
end
|
|
|
|
test "handles zero cleanup_days by falling through to default" do
|
|
assert :ok = PacketCleanupWorker.perform(%{"cleanup_days" => 0})
|
|
end
|
|
|
|
test "handles non-integer cleanup_days by falling through to default" do
|
|
assert :ok = PacketCleanupWorker.perform(%{"cleanup_days" => "string"})
|
|
end
|
|
end
|
|
end
|