Merge branch 'develop' into 'remove-twitter-api'
[akkoma] / test / conversation_test.exs
index 864b2eb03066ec28f3244f6d6626f63fcd89a040..359aa68403a413fc2488227c84d938c71b712e2f 100644 (file)
@@ -1,5 +1,5 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.ConversationTest do
@@ -11,6 +11,30 @@ defmodule Pleroma.ConversationTest do
 
   import Pleroma.Factory
 
+  setup_all do: clear_config([:instance, :federating], true)
+
+  test "it goes through old direct conversations" do
+    user = insert(:user)
+    other_user = insert(:user)
+
+    {:ok, _activity} =
+      CommonAPI.post(user, %{visibility: "direct", status: "hey @#{other_user.nickname}"})
+
+    Pleroma.Tests.ObanHelpers.perform_all()
+
+    Repo.delete_all(Conversation)
+    Repo.delete_all(Conversation.Participation)
+
+    refute Repo.one(Conversation)
+
+    Conversation.bump_for_all_activities()
+
+    assert Repo.one(Conversation)
+    [participation, _p2] = Repo.all(Conversation.Participation)
+
+    assert participation.read
+  end
+
   test "it creates a conversation for given ap_id" do
     assert {:ok, %Conversation{} = conversation} =
              Conversation.create_for_ap_id("https://some_ap_id")
@@ -22,7 +46,7 @@ defmodule Pleroma.ConversationTest do
 
   test "public posts don't create conversations" do
     user = insert(:user)
-    {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey"})
+    {:ok, activity} = CommonAPI.post(user, %{status: "Hey"})
 
     object = Pleroma.Object.normalize(activity)
     context = object.data["context"]
@@ -38,7 +62,7 @@ defmodule Pleroma.ConversationTest do
     tridi = insert(:user)
 
     {:ok, activity} =
-      CommonAPI.post(har, %{"status" => "Hey @#{jafnhar.nickname}", "visibility" => "direct"})
+      CommonAPI.post(har, %{status: "Hey @#{jafnhar.nickname}", visibility: "direct"})
 
     object = Pleroma.Object.normalize(activity)
     context = object.data["context"]
@@ -57,9 +81,9 @@ defmodule Pleroma.ConversationTest do
 
     {:ok, activity} =
       CommonAPI.post(jafnhar, %{
-        "status" => "Hey @#{har.nickname}",
-        "visibility" => "direct",
-        "in_reply_to_status_id" => activity.id
+        status: "Hey @#{har.nickname}",
+        visibility: "direct",
+        in_reply_to_status_id: activity.id
       })
 
     object = Pleroma.Object.normalize(activity)
@@ -81,9 +105,9 @@ defmodule Pleroma.ConversationTest do
 
     {:ok, activity} =
       CommonAPI.post(tridi, %{
-        "status" => "Hey @#{har.nickname}",
-        "visibility" => "direct",
-        "in_reply_to_status_id" => activity.id
+        status: "Hey @#{har.nickname}",
+        visibility: "direct",
+        in_reply_to_status_id: activity.id
       })
 
     object = Pleroma.Object.normalize(activity)
@@ -125,14 +149,14 @@ defmodule Pleroma.ConversationTest do
     jafnhar = insert(:user, local: false)
 
     {:ok, activity} =
-      CommonAPI.post(har, %{"status" => "Hey @#{jafnhar.nickname}", "visibility" => "direct"})
+      CommonAPI.post(har, %{status: "Hey @#{jafnhar.nickname}", visibility: "direct"})
 
     {:ok, conversation} = Conversation.create_or_bump_for(activity)
 
     assert length(conversation.participations) == 2
 
     {:ok, activity} =
-      CommonAPI.post(har, %{"status" => "Hey @#{jafnhar.nickname}", "visibility" => "public"})
+      CommonAPI.post(har, %{status: "Hey @#{jafnhar.nickname}", visibility: "public"})
 
     assert {:error, _} = Conversation.create_or_bump_for(activity)
   end