# Pleroma: A lightweight social networking server # Copyright © 2017-2021 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.BuilderTest do alias Pleroma.Web.ActivityPub.Builder alias Pleroma.Web.CommonAPI.ActivityDraft use Pleroma.DataCase import Pleroma.Factory describe "note/1" do test "returns note data" do user = insert(:user) note = insert(:note) quote = insert(:note) user2 = insert(:user) user3 = insert(:user) draft = %ActivityDraft{ user: user, to: [user2.ap_id], context: "2hu", content_html: "

This is :moominmamma: note

", in_reply_to: note.id, tags: [name: "jimm"], summary: "test summary", cc: [user3.ap_id], extra: %{"custom_tag" => "test"}, quote: quote } expected = %{ "actor" => user.ap_id, "attachment" => [], "cc" => [user3.ap_id], "content" => "

This is :moominmamma: note

", "context" => "2hu", "sensitive" => false, "summary" => "test summary", "tag" => ["jimm"], "to" => [user2.ap_id], "type" => "Note", "custom_tag" => "test", "quoteUri" => quote.data["id"] } assert {:ok, ^expected, []} = Builder.note(draft) end end describe "emoji_react/1" do test "unicode emoji" do user = insert(:user) note = insert(:note) assert {:ok, %{"content" => "👍", "type" => "EmojiReact"}, []} = Builder.emoji_react(user, note, "👍") end test "custom emoji" do user = insert(:user) note = insert(:note) assert {:ok, %{ "content" => ":dinosaur:", "type" => "EmojiReact", "tag" => [ %{ "name" => ":dinosaur:", "id" => "http://localhost:4001/emoji/dino walking.gif", "icon" => %{ "type" => "Image", "url" => "http://localhost:4001/emoji/dino walking.gif" } } ] }, []} = Builder.emoji_react(user, note, ":dinosaur:") end test "remote custom emoji" do user = insert(:user) other_user = insert(:user, local: false) note = insert(:note, data: %{"reactions" => [["wow", [other_user.ap_id], "https://remote/emoji/wow"]]} ) assert {:ok, %{ "content" => ":wow:", "type" => "EmojiReact", "tag" => [ %{ "name" => ":wow:", "id" => "https://remote/emoji/wow", "icon" => %{ "type" => "Image", "url" => "https://remote/emoji/wow" } } ] }, []} = Builder.emoji_react(user, note, ":wow@remote:") end end end