Conversations: Make tests run.
[akkoma] / test / conversation_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.ConversationTest do
6 use Pleroma.DataCase
7 alias Pleroma.Conversation
8 alias Pleroma.Web.CommonAPI
9
10 import Pleroma.Factory
11
12 test "it creates a conversation for given ap_id" do
13 assert {:ok, %Conversation{} = conversation} =
14 Conversation.create_for_ap_id("https://some_ap_id")
15
16 # Inserting again returns the same
17 assert {:ok, conversation_two} = Conversation.create_for_ap_id("https://some_ap_id")
18 assert conversation_two.id == conversation.id
19 end
20
21 test "public posts don't create conversations" do
22 user = insert(:user)
23 {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey"})
24
25 context = activity.data["object"]["context"]
26
27 conversation = Conversation.get_for_ap_id(context)
28
29 refute conversation
30 end
31
32 test "it creates or updates a conversation and participations for a given DM" do
33 har = insert(:user)
34 jafnhar = insert(:user)
35 tridi = insert(:user)
36
37 {:ok, activity} =
38 CommonAPI.post(har, %{"status" => "Hey @#{jafnhar.nickname}", "visibility" => "direct"})
39
40 context = activity.data["object"]["context"]
41
42 conversation =
43 Conversation.get_for_ap_id(context)
44 |> Repo.preload(:participations)
45
46 assert conversation
47 [har_participation, jafnhar_participation] = conversation.participations
48
49 assert har_participation.user_id == har.id
50 assert jafnhar_participation.user_id == jafnhar.id
51
52 {:ok, activity} =
53 CommonAPI.post(jafnhar, %{
54 "status" => "Hey @#{har.nickname}",
55 "visibility" => "direct",
56 "in_reply_to_status_id" => activity.id
57 })
58
59 context = activity.data["object"]["context"]
60
61 conversation_two =
62 Conversation.get_for_ap_id(context)
63 |> Repo.preload(:participations)
64
65 assert conversation_two.id == conversation.id
66
67 [har_participation_two, jafnhar_participation_two] = conversation_two.participations
68
69 assert har_participation_two.user_id == har.id
70 assert jafnhar_participation_two.user_id == jafnhar.id
71
72 {:ok, activity} =
73 CommonAPI.post(tridi, %{
74 "status" => "Hey @#{har.nickname}",
75 "visibility" => "direct",
76 "in_reply_to_status_id" => activity.id
77 })
78
79 context = activity.data["object"]["context"]
80
81 conversation_three =
82 Conversation.get_for_ap_id(context)
83 |> Repo.preload(:participations)
84
85 assert conversation_three.id == conversation.id
86
87 [har_participation_three, jafnhar_participation_three, tridi_participation] =
88 conversation_three.participations
89
90 assert har_participation_three.user_id == har.id
91 assert jafnhar_participation_three.user_id == jafnhar.id
92 assert tridi_participation.user_id == tridi.id
93 end
94 end