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)