Merge remote-tracking branch 'origin/develop' into pleroma-conversations
[akkoma] / test / web / pleroma_api / pleroma_api_controller_test.exs
index 43104e36ea6696faedd235b61c4e654adef22b70..7c75fb2298c8f4d8efa00947f75d3689cfdab9eb 100644 (file)
@@ -6,6 +6,7 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do
   use Pleroma.Web.ConnCase
 
   alias Pleroma.Conversation.Participation
+  alias Pleroma.Repo
   alias Pleroma.Web.CommonAPI
 
   import Pleroma.Factory
@@ -42,4 +43,34 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do
     id_two = activity_two.id
     assert [%{"id" => ^id_one}, %{"id" => ^id_two}] = result
   end
+
+  test "PATCH /api/v1/pleroma/conversations/:id", %{conn: conn} do
+    user = insert(:user)
+    other_user = insert(:user)
+
+    {:ok, _activity} = CommonAPI.post(user, %{"status" => "Hi", "visibility" => "direct"})
+
+    [participation] = Participation.for_user(user)
+
+    participation = Repo.preload(participation, :recipients)
+
+    assert [user] == participation.recipients
+    assert other_user not in participation.recipients
+
+    result =
+      conn
+      |> assign(:user, user)
+      |> patch("/api/v1/pleroma/conversations/#{participation.id}", %{
+        "recipients" => [user.id, other_user.id]
+      })
+      |> json_response(200)
+
+    assert result["id"] == participation.id |> to_string
+
+    assert recipients = result["pleroma"]["recipients"]
+    recipient_ids = Enum.map(recipients, & &1["id"])
+
+    assert user.id in recipient_ids
+    assert other_user.id in recipient_ids
+  end
 end