aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/conversation/participation_test.exs22
-rw-r--r--test/conversation_test.exs84
2 files changed, 103 insertions, 3 deletions
diff --git a/test/conversation/participation_test.exs b/test/conversation/participation_test.exs
index eae1873ca..4e7d9dc92 100644
--- a/test/conversation/participation_test.exs
+++ b/test/conversation/participation_test.exs
@@ -4,9 +4,7 @@
defmodule Pleroma.Conversation.ParticipationTest do
use Pleroma.DataCase
-
import Pleroma.Factory
-
alias Pleroma.Conversation.Participation
test "it creates a participation for a conversation and a user" do
@@ -18,6 +16,26 @@ defmodule Pleroma.Conversation.ParticipationTest do
assert participation.user_id == user.id
assert participation.conversation_id == conversation.id
+
+ :timer.sleep(1000)
+ # Creating again returns the same participation
+ {:ok, %Participation{} = participation_two} =
+ Participation.create_for_user_and_conversation(user, conversation)
+
+ assert participation.id == participation_two.id
+ refute participation.updated_at == participation_two.updated_at
+ end
+
+ test "recreating an existing participations sets it to unread" do
+ participation = insert(:participation, %{read: true})
+
+ {:ok, participation} =
+ Participation.create_for_user_and_conversation(
+ participation.user,
+ participation.conversation
+ )
+
+ refute participation.read
end
test "it marks a participation as read" do
diff --git a/test/conversation_test.exs b/test/conversation_test.exs
index 8fb55d51c..1c9d485ff 100644
--- a/test/conversation_test.exs
+++ b/test/conversation_test.exs
@@ -5,8 +5,90 @@
defmodule Pleroma.ConversationTest do
use Pleroma.DataCase
alias Pleroma.Conversation
+ alias Pleroma.Web.CommonAPI
+
+ import Pleroma.Factory
test "it creates a conversation for given ap_id" do
- assert {:ok, %Conversation{}} = Conversation.create_for_ap_id("https://some_ap_id")
+ assert {:ok, %Conversation{} = conversation} =
+ Conversation.create_for_ap_id("https://some_ap_id")
+
+ # Inserting again returns the same
+ assert {:ok, conversation_two} = Conversation.create_for_ap_id("https://some_ap_id")
+ assert conversation_two.id == conversation.id
+ end
+
+ test "public posts don't create conversations" do
+ user = insert(:user)
+ {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey"})
+
+ context = activity.data["object"]["context"]
+
+ conversation = Conversation.get_for_ap_id(context)
+
+ refute conversation
+ end
+
+ test "it creates or updates a conversation and participations for a given DM" do
+ har = insert(:user)
+ jafnhar = insert(:user)
+ tridi = insert(:user)
+
+ {:ok, activity} =
+ CommonAPI.post(har, %{"status" => "Hey @#{jafnhar.nickname}", "visibility" => "direct"})
+
+ context = activity.data["object"]["context"]
+
+ conversation =
+ Conversation.get_for_ap_id(context)
+ |> Repo.preload(:participations)
+
+ assert conversation
+ [har_participation, jafnhar_participation] = conversation.participations
+
+ assert har_participation.user_id == har.id
+ assert jafnhar_participation.user_id == jafnhar.id
+
+ {:ok, activity} =
+ CommonAPI.post(jafnhar, %{
+ "status" => "Hey @#{har.nickname}",
+ "visibility" => "direct",
+ "in_reply_to_status_id" => activity.id
+ })
+
+ context = activity.data["object"]["context"]
+
+ conversation_two =
+ Conversation.get_for_ap_id(context)
+ |> Repo.preload(:participations)
+
+ assert conversation_two.id == conversation.id
+
+ [har_participation_two, jafnhar_participation_two] = conversation_two.participations
+
+ assert har_participation_two.user_id == har.id
+ assert jafnhar_participation_two.user_id == jafnhar.id
+
+ {:ok, activity} =
+ CommonAPI.post(tridi, %{
+ "status" => "Hey @#{har.nickname}",
+ "visibility" => "direct",
+ "in_reply_to_status_id" => activity.id
+ })
+
+ context = activity.data["object"]["context"]
+
+ conversation_three =
+ Conversation.get_for_ap_id(context)
+ |> Repo.preload(:participations)
+
+ assert conversation_three.id == conversation.id
+
+ [har_participation_three, jafnhar_participation_three, tridi_participation] =
+ conversation_three.participations
+
+ assert har_participation_three.user_id == har.id
+ assert jafnhar_participation_three.user_id == jafnhar.id
+ assert tridi_participation.user_id == tridi.id
end
end