distraction.party/test/support/builders/activity_builder.ex

47 lines
1.1 KiB
Elixir
Raw Normal View History

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