1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.ActivityPub.SideEffectsTest do
10 alias Pleroma.Web.ActivityPub.ActivityPub
11 alias Pleroma.Web.ActivityPub.Builder
12 alias Pleroma.Web.ActivityPub.SideEffects
13 alias Pleroma.Web.CommonAPI
15 import Pleroma.Factory
17 describe "like objects" do
20 {:ok, post} = CommonAPI.post(user, %{"status" => "hey"})
22 {:ok, like_data, _meta} = Builder.like(user, post.object)
23 {:ok, like, _meta} = ActivityPub.persist(like_data, local: true)
25 %{like: like, user: user}
28 test "add the like to the original object", %{like: like, user: user} do
29 {:ok, like, _} = SideEffects.handle(like)
30 object = Object.get_by_ap_id(like.data["object"])
31 assert object.data["like_count"] == 1
32 assert user.ap_id in object.data["likes"]
36 describe "creation of ChatMessages" do
37 test "it creates a Chat for the local users and bumps the unread count" do
38 author = insert(:user, local: false)
39 recipient = insert(:user, local: true)
41 {:ok, chat_message_data, _meta} = Builder.chat_message(author, recipient.ap_id, "hey")
42 {:ok, chat_message_object} = Object.create(chat_message_data)
44 {:ok, create_activity_data, _meta} =
45 Builder.create(author, chat_message_object.data["id"], [recipient.ap_id])
47 {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false)
49 {:ok, _create_activity, _meta} = SideEffects.handle(create_activity)
51 # The remote user won't get a chat
52 chat = Chat.get(author.id, recipient.ap_id)
55 # The local user will get a chat
56 chat = Chat.get(recipient.id, author.ap_id)