doc fixes
[akkoma] / test / support / builders / activity_builder.ex
index 0b7f79c5f32f7d70b6a4e1df63dc5603451eb33a..d9c188955420650578778a7b3ba1d2b62abe6279 100644 (file)
@@ -1,29 +1,42 @@
 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)
+    ActivityPub.insert(activity)
+  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)