Merge branch 'develop' into 'docs/add-clients-to-ex_doc'
[akkoma] / test / web / retry_queue_test.exs
index 9351b6c24bd14e5a7994feb443d48f7d4c86d029..ecb3ce5d0651007be5a97a00d784159854b6331d 100644 (file)
@@ -3,7 +3,8 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule MockActivityPub do
-  def publish_one(ret) do
+  def publish_one({ret, waiter}) do
+    send(waiter, :complete)
     {ret, "success"}
   end
 end
@@ -15,21 +16,33 @@ defmodule Pleroma.Web.Federator.RetryQueueTest do
   @small_retry_count 0
   @hopeless_retry_count 10
 
+  setup do
+    RetryQueue.reset_stats()
+  end
+
+  test "RetryQueue responds to stats request" do
+    assert %{delivered: 0, dropped: 0} == RetryQueue.get_stats()
+  end
+
   test "failed posts are retried" do
     {:retry, _timeout} = RetryQueue.get_retry_params(@small_retry_count)
 
-    assert {:noreply, %{delivered: 1}} ==
-             RetryQueue.handle_info({:send, :ok, MockActivityPub, @small_retry_count}, %{
-               delivered: 0
-             })
+    wait_task =
+      Task.async(fn ->
+        receive do
+          :complete -> :ok
+        end
+      end)
+
+    RetryQueue.enqueue({:ok, wait_task.pid}, MockActivityPub, @small_retry_count)
+    Task.await(wait_task)
+    assert %{delivered: 1, dropped: 0} == RetryQueue.get_stats()
   end
 
   test "posts that have been tried too many times are dropped" do
     {:drop, _timeout} = RetryQueue.get_retry_params(@hopeless_retry_count)
 
-    assert {:noreply, %{dropped: 1}} ==
-             RetryQueue.handle_cast({:maybe_enqueue, %{}, nil, @hopeless_retry_count}, %{
-               dropped: 0
-             })
+    RetryQueue.enqueue({:ok, nil}, MockActivityPub, @hopeless_retry_count)
+    assert %{delivered: 0, dropped: 1} == RetryQueue.get_stats()
   end
 end