1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.MastodonAPI.ScheduledActivityViewTest do
7 alias Pleroma.ScheduledActivity
8 alias Pleroma.Web.ActivityPub.ActivityPub
9 alias Pleroma.Web.CommonAPI
10 alias Pleroma.Web.CommonAPI.Utils
11 alias Pleroma.Web.MastodonAPI.ScheduledActivityView
12 alias Pleroma.Web.MastodonAPI.StatusView
13 import Pleroma.Factory
15 test "A scheduled activity with a media attachment" do
17 {:ok, activity} = CommonAPI.post(user, %{"status" => "hi"})
20 NaiveDateTime.utc_now()
21 |> NaiveDateTime.add(:timer.minutes(10), :millisecond)
22 |> NaiveDateTime.to_iso8601()
25 content_type: "image/jpg",
26 path: Path.absname("test/fixtures/image.jpg"),
27 filename: "an_image.jpg"
30 {:ok, upload} = ActivityPub.upload(file, actor: user.ap_id)
34 "media_ids" => [upload.id],
37 "spoiler_text" => "spoiler",
38 "visibility" => "unlisted",
39 "in_reply_to_id" => to_string(activity.id)
41 scheduled_at: scheduled_at
44 {:ok, scheduled_activity} = ScheduledActivity.create(user, attrs)
45 result = ScheduledActivityView.render("show.json", %{scheduled_activity: scheduled_activity})
48 id: to_string(scheduled_activity.id),
50 %{"media_ids" => [upload.id]}
51 |> Utils.attachments_from_ids()
52 |> Enum.map(&StatusView.render("attachment.json", %{attachment: &1})),
54 in_reply_to_id: to_string(activity.id),
55 media_ids: [upload.id],
59 spoiler_text: "spoiler",
61 visibility: "unlisted"
63 scheduled_at: Utils.to_masto_date(scheduled_activity.scheduled_at)
66 assert expected == result