Merge branch 'develop' into issue/1383
[akkoma] / test / web / mastodon_api / controllers / scheduled_activity_controller_test.exs
index 9ad6a4fa75cb17b3a09d6300c6414b5c67dcf2cd..478631a12c642aebb35c4e3e7f7279b87cf41f75 100644 (file)
@@ -3,12 +3,15 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do
-  use Pleroma.Web.ConnCase, async: true
+  use Pleroma.Web.ConnCase
 
   alias Pleroma.Repo
   alias Pleroma.ScheduledActivity
 
   import Pleroma.Factory
+  import Ecto.Query
+
+  clear_config([ScheduledActivity, :enabled])
 
   test "shows scheduled activities", %{conn: conn} do
     user = insert(:user)
@@ -67,8 +70,32 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do
   end
 
   test "updates a scheduled activity", %{conn: conn} do
+    Pleroma.Config.put([ScheduledActivity, :enabled], true)
     user = insert(:user)
-    scheduled_activity = insert(:scheduled_activity, user: user)
+
+    scheduled_at =
+      NaiveDateTime.add(
+        NaiveDateTime.utc_now(),
+        :timer.minutes(60),
+        :millisecond
+      )
+
+    {:ok, scheduled_activity} =
+      ScheduledActivity.create(
+        user,
+        %{
+          scheduled_at: scheduled_at,
+          params: build(:note).data
+        }
+      )
+
+    scheduled_activity_job =
+      Repo.one(from(j in Oban.Job, where: j.queue == "scheduled_activities"))
+
+    assert scheduled_activity_job.args == %{"activity_id" => scheduled_activity.id}
+
+    assert DateTime.truncate(scheduled_activity_job.scheduled_at, :second) ==
+             to_datetime(scheduled_at)
 
     new_scheduled_at =
       NaiveDateTime.add(NaiveDateTime.utc_now(), :timer.minutes(120), :millisecond)
@@ -82,6 +109,10 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do
 
     assert %{"scheduled_at" => expected_scheduled_at} = json_response(res_conn, 200)
     assert expected_scheduled_at == Pleroma.Web.CommonAPI.Utils.to_masto_date(new_scheduled_at)
+    scheduled_activity_job = refresh_record(scheduled_activity_job)
+
+    assert DateTime.truncate(scheduled_activity_job.scheduled_at, :second) ==
+             to_datetime(new_scheduled_at)
 
     res_conn =
       conn
@@ -92,8 +123,27 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do
   end
 
   test "deletes a scheduled activity", %{conn: conn} do
+    Pleroma.Config.put([ScheduledActivity, :enabled], true)
     user = insert(:user)
-    scheduled_activity = insert(:scheduled_activity, user: user)
+
+    {:ok, scheduled_activity} =
+      ScheduledActivity.create(
+        user,
+        %{
+          scheduled_at:
+            NaiveDateTime.add(
+              NaiveDateTime.utc_now(),
+              :timer.minutes(60),
+              :millisecond
+            ),
+          params: build(:note).data
+        }
+      )
+
+    scheduled_activity_job =
+      Repo.one(from(j in Oban.Job, where: j.queue == "scheduled_activities"))
+
+    assert scheduled_activity_job.args == %{"activity_id" => scheduled_activity.id}
 
     res_conn =
       conn
@@ -101,7 +151,8 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do
       |> delete("/api/v1/scheduled_statuses/#{scheduled_activity.id}")
 
     assert %{} = json_response(res_conn, 200)
-    assert nil == Repo.get(ScheduledActivity, scheduled_activity.id)
+    refute Repo.get(ScheduledActivity, scheduled_activity.id)
+    refute Repo.get(Oban.Job, scheduled_activity_job.id)
 
     res_conn =
       conn