aboutsummaryrefslogtreecommitdiff
path: root/test/support/builders
diff options
context:
space:
mode:
Diffstat (limited to 'test/support/builders')
-rw-r--r--test/support/builders/activity_builder.ex61
-rw-r--r--test/support/builders/user_builder.ex30
2 files changed, 91 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
diff --git a/test/support/builders/user_builder.ex b/test/support/builders/user_builder.ex
new file mode 100644
index 0000000..d6af306
--- /dev/null
+++ b/test/support/builders/user_builder.ex
@@ -0,0 +1,30 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Builders.UserBuilder do
+ alias Pleroma.Repo
+ alias Pleroma.User
+
+ def build(data \\ %{}) do
+ user = %User{
+ email: "test@example.org",
+ name: "Test Name",
+ nickname: "testname",
+ password_hash: Pleroma.Password.Pbkdf2.hash_pwd_salt("test"),
+ bio: "A tester.",
+ ap_id: "some id",
+ last_digest_emailed_at: NaiveDateTime.truncate(NaiveDateTime.utc_now(), :second),
+ multi_factor_authentication_settings: %Pleroma.MFA.Settings{},
+ notification_settings: %Pleroma.User.NotificationSetting{}
+ }
+
+ Map.merge(user, data)
+ end
+
+ def insert(data \\ %{}) do
+ {:ok, user} = Repo.insert(build(data))
+ User.invalidate_cache(user)
+ {:ok, user}
+ end
+end