Merge branch 'develop' into foxing-patch-1
[akkoma] / test / support / builders / activity_builder.ex
index 0b7f79c5f32f7d70b6a4e1df63dc5603451eb33a..7c4950bfa08a6b9559f587daa3e7bc5a49b77b24 100644 (file)
@@ -1,29 +1,49 @@
 defmodule Pleroma.Builders.ActivityBuilder do
-  alias Pleroma.Builders.UserBuilder
   alias Pleroma.Web.ActivityPub.ActivityPub
-  alias Pleroma.User
 
-  def public_and_non_public do
-    {:ok, user} = UserBuilder.insert
-    public = %{
-      "id" => 1,
+  def build(data \\ %{}, opts \\ %{}) do
+    user = opts[:user] || Pleroma.Factory.insert(:user)
+
+    activity = %{
+      "id" => Pleroma.Web.ActivityPub.Utils.generate_object_id(),
       "actor" => user.ap_id,
       "to" => ["https://www.w3.org/ns/activitystreams#Public"],
+      "type" => "Create",
       "object" => %{
         "type" => "Note",
-        "content" => "test"
+        "content" => "test",
+        "to" => ["https://www.w3.org/ns/activitystreams#Public"]
       }
     }
 
-    non_public = %{
-      "id" => 2,
-      "actor" => user.ap_id,
-      "to" => [],
-      "object" => %{
-        "type" => "Note",
-        "content" => "test"
-      }
-    }
+    Map.merge(activity, data)
+  end
+
+  def insert(data \\ %{}, opts \\ %{}) do
+    activity = build(data, opts)
+
+    case ActivityPub.insert(activity) do
+      ok = {:ok, activity} ->
+        ActivityPub.notify_and_stream(activity)
+        ok
+
+      error ->
+        error
+    end
+  end
+
+  def insert_list(times, data \\ %{}, opts \\ %{}) do
+    Enum.map(1..times, fn _n ->
+      {:ok, activity} = insert(data, opts)
+      activity
+    end)
+  end
+
+  def public_and_non_public do
+    user = Pleroma.Factory.insert(:user)
+
+    public = build(%{"id" => 1}, %{user: user})
+    non_public = build(%{"id" => 2, "to" => [user.follower_address]}, %{user: user})
 
     {:ok, public} = ActivityPub.insert(public)
     {:ok, non_public} = ActivityPub.insert(non_public)