68 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
# Pleroma: A lightweight social networking server
 | 
						|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
 | 
						|
# SPDX-License-Identifier: AGPL-3.0-only
 | 
						|
 | 
						|
defmodule Pleroma.Web.MastodonAPI.ScheduledActivityViewTest do
 | 
						|
  use Pleroma.DataCase
 | 
						|
  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/jpg",
 | 
						|
      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
 |