diff options
| author | kaniini <nenolod@gmail.com> | 2019-06-24 07:14:04 +0000 | 
|---|---|---|
| committer | kaniini <nenolod@gmail.com> | 2019-06-24 07:14:04 +0000 | 
| commit | 0f07bcc9e3b5037b33731616534c128f6c04a589 (patch) | |
| tree | a204631affcb16b96fffa8334e625d765b8ad7dc /test/web | |
| parent | 58d567ddc56701825804482331bdcc75f601535c (diff) | |
| parent | f2c03425b0f15b4f633195a7511be05023ba8f48 (diff) | |
| download | pleroma-0f07bcc9e3b5037b33731616534c128f6c04a589.tar.gz pleroma-0f07bcc9e3b5037b33731616534c128f6c04a589.zip | |
Merge branch 'conversation-update-on-dm-delete' into 'develop'
Broadcast conversation update when DM is deleted
Closes #1001
See merge request pleroma/pleroma!1311
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/streamer_test.exs | 106 | 
1 files changed, 106 insertions, 0 deletions
| diff --git a/test/web/streamer_test.exs b/test/web/streamer_test.exs index 648e28712..4633d7765 100644 --- a/test/web/streamer_test.exs +++ b/test/web/streamer_test.exs @@ -356,4 +356,110 @@ defmodule Pleroma.Web.StreamerTest do      Task.await(task)    end + +  describe "direct streams" do +    setup do +      GenServer.start(Streamer, %{}, name: Streamer) + +      on_exit(fn -> +        if pid = Process.whereis(Streamer) do +          Process.exit(pid, :kill) +        end +      end) + +      :ok +    end + +    test "it sends conversation update to the 'direct' stream", %{} do +      user = insert(:user) +      another_user = insert(:user) + +      task = +        Task.async(fn -> +          assert_receive {:text, _received_event}, 4_000 +        end) + +      Streamer.add_socket( +        "direct", +        %{transport_pid: task.pid, assigns: %{user: user}} +      ) + +      {:ok, _create_activity} = +        CommonAPI.post(another_user, %{ +          "status" => "hey @#{user.nickname}", +          "visibility" => "direct" +        }) + +      Task.await(task) +    end + +    test "it doesn't send conversation update to the 'direct' streamj when the last message in the conversation is deleted" do +      user = insert(:user) +      another_user = insert(:user) + +      {:ok, create_activity} = +        CommonAPI.post(another_user, %{ +          "status" => "hi @#{user.nickname}", +          "visibility" => "direct" +        }) + +      task = +        Task.async(fn -> +          assert_receive {:text, received_event}, 4_000 +          assert %{"event" => "delete", "payload" => _} = Jason.decode!(received_event) + +          refute_receive {:text, _}, 4_000 +        end) + +      Streamer.add_socket( +        "direct", +        %{transport_pid: task.pid, assigns: %{user: user}} +      ) + +      {:ok, _} = CommonAPI.delete(create_activity.id, another_user) + +      Task.await(task) +    end + +    test "it sends conversation update to the 'direct' stream when a message is deleted" do +      user = insert(:user) +      another_user = insert(:user) + +      {:ok, create_activity} = +        CommonAPI.post(another_user, %{ +          "status" => "hi @#{user.nickname}", +          "visibility" => "direct" +        }) + +      {:ok, create_activity2} = +        CommonAPI.post(another_user, %{ +          "status" => "hi @#{user.nickname}", +          "in_reply_to_status_id" => create_activity.id, +          "visibility" => "direct" +        }) + +      task = +        Task.async(fn -> +          assert_receive {:text, received_event}, 4_000 +          assert %{"event" => "delete", "payload" => _} = Jason.decode!(received_event) + +          assert_receive {:text, received_event}, 4_000 + +          assert %{"event" => "conversation", "payload" => received_payload} = +                   Jason.decode!(received_event) + +          assert %{"last_status" => last_status} = Jason.decode!(received_payload) +          assert last_status["id"] == to_string(create_activity.id) +        end) + +      Streamer.add_socket( +        "direct", +        %{transport_pid: task.pid, assigns: %{user: user}} +      ) + +      {:ok, _} = CommonAPI.delete(create_activity2.id, another_user) + +      Task.await(task) +    end +  end  end | 
