pleroma/test/support/builders/activity_builder.ex

48 lines
1.2 KiB
Elixir
Raw Normal View History

2017-03-21 17:53:20 +01:00
defmodule Pleroma.Builders.ActivityBuilder do
alias Pleroma.Builders.UserBuilder
alias Pleroma.Web.ActivityPub.ActivityPub
2017-03-21 20:22:05 +01:00
def build(data \\ %{}, opts \\ %{}) do
2017-04-16 15:28:28 +02:00
user = opts[:user] || Pleroma.Factory.insert(:user)
2017-03-21 20:22:05 +01:00
activity = %{
2017-05-16 15:31:11 +02:00
"id" => Pleroma.Web.ActivityPub.Utils.generate_object_id,
2017-03-21 17:53:20 +01:00
"actor" => user.ap_id,
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
"object" => %{
"type" => "Note",
"content" => "test"
},
"type" => "Create"
2017-03-21 17:53:20 +01:00
}
2017-03-21 20:22:05 +01:00
Map.merge(activity, data)
end
2017-03-21 17:53:20 +01:00
2017-03-21 20:22:05 +01:00
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)
2017-03-21 20:22:05 +01:00
activity
end)
end
def public_and_non_public do
2017-04-16 15:28:28 +02:00
user = Pleroma.Factory.insert(:user)
2017-03-21 20:22:05 +01:00
public = build(%{"id" => 1}, %{user: user})
non_public = build(%{"id" => 2, "to" => []}, %{user: user})
2017-03-21 17:53:20 +01:00
{:ok, public} = ActivityPub.insert(public)
{:ok, non_public} = ActivityPub.insert(non_public)
%{
public: public,
non_public: non_public,
user: user
}
end
end