# Pleroma: A lightweight social networking server # Copyright © 2017-2021 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.ScheduledActivityViewTest do use Pleroma.DataCase, async: true alias Pleroma.ScheduledActivity alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.CommonAPI alias Pleroma.Web.CommonAPI.Utils alias Pleroma.Web.MastodonAPI.ScheduledActivityView alias Pleroma.Web.MastodonAPI.StatusView import Pleroma.Factory test "A scheduled activity with a media attachment" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{status: "hi"}) scheduled_at = NaiveDateTime.utc_now() |> NaiveDateTime.add(:timer.minutes(10), :millisecond) |> NaiveDateTime.to_iso8601() file = %Plug.Upload{ content_type: "image/jpeg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg" } {:ok, upload} = ActivityPub.upload(file, actor: user.ap_id) attrs = %{ params: %{ "media_ids" => [upload.id], "status" => "hi", "sensitive" => true, "spoiler_text" => "spoiler", "visibility" => "unlisted", "in_reply_to_id" => to_string(activity.id) }, scheduled_at: scheduled_at } {:ok, scheduled_activity} = ScheduledActivity.create(user, attrs) result = ScheduledActivityView.render("show.json", %{scheduled_activity: scheduled_activity}) expected = %{ id: to_string(scheduled_activity.id), media_attachments: %{media_ids: [upload.id]} |> Utils.attachments_from_ids() |> Enum.map(&StatusView.render("attachment.json", %{attachment: &1})), params: %{ in_reply_to_id: to_string(activity.id), media_ids: [upload.id], poll: nil, scheduled_at: nil, sensitive: true, spoiler_text: "spoiler", text: "hi", visibility: "unlisted" }, scheduled_at: Utils.to_masto_date(scheduled_activity.scheduled_at) } assert expected == result end end