1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.MastodonAPI.ScheduledActivityViewTest do
6 use Pleroma.DataCase, async: true
8 alias Pleroma.ScheduledActivity
9 alias Pleroma.UnstubbedConfigMock, as: ConfigMock
10 alias Pleroma.Web.ActivityPub.ActivityPub
11 alias Pleroma.Web.CommonAPI
12 alias Pleroma.Web.CommonAPI.Utils
13 alias Pleroma.Web.MastodonAPI.ScheduledActivityView
14 alias Pleroma.Web.MastodonAPI.StatusView
17 import Pleroma.Factory
19 test "A scheduled activity with a media attachment" do
21 {:ok, activity} = CommonAPI.post(user, %{status: "hi"})
24 NaiveDateTime.utc_now()
25 |> NaiveDateTime.add(:timer.minutes(10), :millisecond)
26 |> NaiveDateTime.to_iso8601()
29 content_type: "image/jpeg",
30 path: Path.absname("test/fixtures/image.jpg"),
31 filename: "an_image.jpg"
35 |> stub_with(Pleroma.Test.StaticConfig)
37 {:ok, upload} = ActivityPub.upload(file, actor: user.ap_id)
41 "media_ids" => [upload.id],
44 "spoiler_text" => "spoiler",
45 "visibility" => "unlisted",
46 "in_reply_to_id" => to_string(activity.id)
48 scheduled_at: scheduled_at
51 {:ok, scheduled_activity} = ScheduledActivity.create(user, attrs)
52 result = ScheduledActivityView.render("show.json", %{scheduled_activity: scheduled_activity})
55 id: to_string(scheduled_activity.id),
57 %{media_ids: [upload.id]}
58 |> Utils.attachments_from_ids(user)
59 |> Enum.map(&StatusView.render("attachment.json", %{attachment: &1})),
61 in_reply_to_id: to_string(activity.id),
62 media_ids: [upload.id],
66 spoiler_text: "spoiler",
68 visibility: "unlisted",
71 scheduled_at: Utils.to_masto_date(scheduled_activity.scheduled_at)
74 assert expected == result