diff options
| author | Mark Felder <feld@FreeBSD.org> | 2020-10-13 09:54:53 -0500 | 
|---|---|---|
| committer | Mark Felder <feld@FreeBSD.org> | 2020-10-13 09:54:53 -0500 | 
| commit | 64553ebae2f415b309df5f6b1c13b9972bc65aaa (patch) | |
| tree | 7e9b70d0def2b93c9e1f867f834ccc4ee1a9f6fc /test/web/mastodon_api/controllers/conversation_controller_test.exs | |
| parent | ed6511a086694fc163b488d807f17d246f80ad5b (diff) | |
| parent | 8b6221d4ecd1d7e354e7de831dd46e285cb85077 (diff) | |
| download | pleroma-64553ebae2f415b309df5f6b1c13b9972bc65aaa.tar.gz pleroma-64553ebae2f415b309df5f6b1c13b9972bc65aaa.zip  | |
Merge branch 'develop' into chore/elixir-1.11
Diffstat (limited to 'test/web/mastodon_api/controllers/conversation_controller_test.exs')
| -rw-r--r-- | test/web/mastodon_api/controllers/conversation_controller_test.exs | 209 | 
1 files changed, 0 insertions, 209 deletions
diff --git a/test/web/mastodon_api/controllers/conversation_controller_test.exs b/test/web/mastodon_api/controllers/conversation_controller_test.exs deleted file mode 100644 index 3e21e6bf1..000000000 --- a/test/web/mastodon_api/controllers/conversation_controller_test.exs +++ /dev/null @@ -1,209 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.MastodonAPI.ConversationControllerTest do -  use Pleroma.Web.ConnCase - -  alias Pleroma.User -  alias Pleroma.Web.CommonAPI - -  import Pleroma.Factory - -  setup do: oauth_access(["read:statuses"]) - -  describe "returns a list of conversations" do -    setup(%{user: user_one, conn: conn}) do -      user_two = insert(:user) -      user_three = insert(:user) - -      {:ok, user_two} = User.follow(user_two, user_one) - -      {:ok, %{user: user_one, user_two: user_two, user_three: user_three, conn: conn}} -    end - -    test "returns correct conversations", %{ -      user: user_one, -      user_two: user_two, -      user_three: user_three, -      conn: conn -    } do -      assert User.get_cached_by_id(user_two.id).unread_conversation_count == 0 -      {:ok, direct} = create_direct_message(user_one, [user_two, user_three]) - -      assert User.get_cached_by_id(user_two.id).unread_conversation_count == 1 - -      {:ok, _follower_only} = -        CommonAPI.post(user_one, %{ -          status: "Hi @#{user_two.nickname}!", -          visibility: "private" -        }) - -      res_conn = get(conn, "/api/v1/conversations") - -      assert response = json_response_and_validate_schema(res_conn, 200) - -      assert [ -               %{ -                 "id" => res_id, -                 "accounts" => res_accounts, -                 "last_status" => res_last_status, -                 "unread" => unread -               } -             ] = response - -      account_ids = Enum.map(res_accounts, & &1["id"]) -      assert length(res_accounts) == 2 -      assert user_two.id in account_ids -      assert user_three.id in account_ids -      assert is_binary(res_id) -      assert unread == false -      assert res_last_status["id"] == direct.id -      assert User.get_cached_by_id(user_one.id).unread_conversation_count == 0 -    end - -    test "observes limit params", %{ -      user: user_one, -      user_two: user_two, -      user_three: user_three, -      conn: conn -    } do -      {:ok, _} = create_direct_message(user_one, [user_two, user_three]) -      {:ok, _} = create_direct_message(user_two, [user_one, user_three]) -      {:ok, _} = create_direct_message(user_three, [user_two, user_one]) - -      res_conn = get(conn, "/api/v1/conversations?limit=1") - -      assert response = json_response_and_validate_schema(res_conn, 200) - -      assert Enum.count(response) == 1 - -      res_conn = get(conn, "/api/v1/conversations?limit=2") - -      assert response = json_response_and_validate_schema(res_conn, 200) - -      assert Enum.count(response) == 2 -    end -  end - -  test "filters conversations by recipients", %{user: user_one, conn: conn} do -    user_two = insert(:user) -    user_three = insert(:user) -    {:ok, direct1} = create_direct_message(user_one, [user_two]) -    {:ok, _direct2} = create_direct_message(user_one, [user_three]) -    {:ok, direct3} = create_direct_message(user_one, [user_two, user_three]) -    {:ok, _direct4} = create_direct_message(user_two, [user_three]) -    {:ok, direct5} = create_direct_message(user_two, [user_one]) - -    assert [conversation1, conversation2] = -             conn -             |> get("/api/v1/conversations?recipients[]=#{user_two.id}") -             |> json_response_and_validate_schema(200) - -    assert conversation1["last_status"]["id"] == direct5.id -    assert conversation2["last_status"]["id"] == direct1.id - -    [conversation1] = -      conn -      |> get("/api/v1/conversations?recipients[]=#{user_two.id}&recipients[]=#{user_three.id}") -      |> json_response_and_validate_schema(200) - -    assert conversation1["last_status"]["id"] == direct3.id -  end - -  test "updates the last_status on reply", %{user: user_one, conn: conn} do -    user_two = insert(:user) -    {:ok, direct} = create_direct_message(user_one, [user_two]) - -    {:ok, direct_reply} = -      CommonAPI.post(user_two, %{ -        status: "reply", -        visibility: "direct", -        in_reply_to_status_id: direct.id -      }) - -    [%{"last_status" => res_last_status}] = -      conn -      |> get("/api/v1/conversations") -      |> json_response_and_validate_schema(200) - -    assert res_last_status["id"] == direct_reply.id -  end - -  test "the user marks a conversation as read", %{user: user_one, conn: conn} do -    user_two = insert(:user) -    {:ok, direct} = create_direct_message(user_one, [user_two]) - -    assert User.get_cached_by_id(user_one.id).unread_conversation_count == 0 -    assert User.get_cached_by_id(user_two.id).unread_conversation_count == 1 - -    user_two_conn = -      build_conn() -      |> assign(:user, user_two) -      |> assign( -        :token, -        insert(:oauth_token, user: user_two, scopes: ["read:statuses", "write:conversations"]) -      ) - -    [%{"id" => direct_conversation_id, "unread" => true}] = -      user_two_conn -      |> get("/api/v1/conversations") -      |> json_response_and_validate_schema(200) - -    %{"unread" => false} = -      user_two_conn -      |> post("/api/v1/conversations/#{direct_conversation_id}/read") -      |> json_response_and_validate_schema(200) - -    assert User.get_cached_by_id(user_one.id).unread_conversation_count == 0 -    assert User.get_cached_by_id(user_two.id).unread_conversation_count == 0 - -    # The conversation is marked as unread on reply -    {:ok, _} = -      CommonAPI.post(user_two, %{ -        status: "reply", -        visibility: "direct", -        in_reply_to_status_id: direct.id -      }) - -    [%{"unread" => true}] = -      conn -      |> get("/api/v1/conversations") -      |> json_response_and_validate_schema(200) - -    assert User.get_cached_by_id(user_one.id).unread_conversation_count == 1 -    assert User.get_cached_by_id(user_two.id).unread_conversation_count == 0 - -    # A reply doesn't increment the user's unread_conversation_count if the conversation is unread -    {:ok, _} = -      CommonAPI.post(user_two, %{ -        status: "reply", -        visibility: "direct", -        in_reply_to_status_id: direct.id -      }) - -    assert User.get_cached_by_id(user_one.id).unread_conversation_count == 1 -    assert User.get_cached_by_id(user_two.id).unread_conversation_count == 0 -  end - -  test "(vanilla) Mastodon frontend behaviour", %{user: user_one, conn: conn} do -    user_two = insert(:user) -    {:ok, direct} = create_direct_message(user_one, [user_two]) - -    res_conn = get(conn, "/api/v1/statuses/#{direct.id}/context") - -    assert %{"ancestors" => [], "descendants" => []} == json_response(res_conn, 200) -  end - -  defp create_direct_message(sender, recips) do -    hellos = -      recips -      |> Enum.map(fn s -> "@#{s.nickname}" end) -      |> Enum.join(", ") - -    CommonAPI.post(sender, %{ -      status: "Hi #{hellos}!", -      visibility: "direct" -    }) -  end -end  | 
