diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/web/mastodon_api/conversation_view_test.exs | 40 | ||||
| -rw-r--r-- | test/web/pleroma_api/pleroma_api_controller_test.exs | 31 | 
2 files changed, 71 insertions, 0 deletions
| diff --git a/test/web/mastodon_api/conversation_view_test.exs b/test/web/mastodon_api/conversation_view_test.exs new file mode 100644 index 000000000..2a4b41fa4 --- /dev/null +++ b/test/web/mastodon_api/conversation_view_test.exs @@ -0,0 +1,40 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.MastodonAPI.ConversationViewTest do +  use Pleroma.DataCase + +  alias Pleroma.Web.CommonAPI +  alias Pleroma.Conversation.Participation +  alias Pleroma.Web.MastodonAPI.ConversationView + +  import Pleroma.Factory + +  test "represents a Mastodon Conversation entity" do +    user = insert(:user) +    other_user = insert(:user) + +    {:ok, activity} = +      CommonAPI.post(user, %{"status" => "hey @#{other_user.nickname}", "visibility" => "direct"}) + +    [participation] = Participation.for_user_with_last_activity_id(user) + +    assert participation + +    conversation = +      ConversationView.render("participation.json", %{participation: participation, user: user}) + +    assert conversation.id == participation.id |> to_string() +    assert conversation.last_status.id == activity.id + +    assert [account] = conversation.accounts +    assert account.id == other_user.id + +    assert recipients = conversation.pleroma.recipients +    recipient_ids = recipients |> Enum.map(& &1.id) + +    assert user.id in recipient_ids +    assert other_user.id in recipient_ids +  end +end diff --git a/test/web/pleroma_api/pleroma_api_controller_test.exs b/test/web/pleroma_api/pleroma_api_controller_test.exs index 43104e36e..7989defe0 100644 --- a/test/web/pleroma_api/pleroma_api_controller_test.exs +++ b/test/web/pleroma_api/pleroma_api_controller_test.exs @@ -7,6 +7,7 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do    alias Pleroma.Conversation.Participation    alias Pleroma.Web.CommonAPI +  alias Pleroma.Repo    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 | 
