aboutsummaryrefslogtreecommitdiff
path: root/test/support/builders/activity_builder.ex
diff options
context:
space:
mode:
Diffstat (limited to 'test/support/builders/activity_builder.ex')
-rw-r--r--test/support/builders/activity_builder.ex61
1 files changed, 61 insertions, 0 deletions
diff --git a/test/support/builders/activity_builder.ex b/test/support/builders/activity_builder.ex
new file mode 100644
index 0000000..f1ca395
--- /dev/null
+++ b/test/support/builders/activity_builder.ex
@@ -0,0 +1,61 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Builders.ActivityBuilder do
+ alias Pleroma.Web.ActivityPub.ActivityPub
+
+ 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",
+ "to" => ["https://www.w3.org/ns/activitystreams#Public"]
+ }
+ }
+
+ 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)
+
+ %{
+ public: public,
+ non_public: non_public,
+ user: user
+ }
+ end
+end