Browse Source

Conversations: Make tests run.

tags/v1.1.4
lain 5 years ago
parent
commit
c352a0aba6
3 changed files with 51 additions and 11 deletions
  1. +36
    -0
      lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
  2. +1
    -1
      lib/pleroma/web/router.ex
  3. +14
    -10
      test/web/mastodon_api/mastodon_api_controller_test.exs

+ 36
- 0
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex View File

@@ -8,6 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
alias Ecto.Changeset alias Ecto.Changeset
alias Pleroma.Activity alias Pleroma.Activity
alias Pleroma.Config alias Pleroma.Config
alias Pleroma.Conversation.Participation
alias Pleroma.Filter alias Pleroma.Filter
alias Pleroma.Notification alias Pleroma.Notification
alias Pleroma.Object alias Pleroma.Object
@@ -1584,6 +1585,41 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end end
end end


def conversations(%{assigns: %{user: user}} = conn, params) do
participations = Participation.for_user_with_last_activity_id(user, params)

conversations =
Enum.map(participations, fn participation ->
%{
id: participation.id,
# TODO: Add this.
accounts: [],
unread: !participation.read,
last_status: participation.last_activity_id
}
end)

conn
|> add_link_headers(:conversations, participations)
|> json(conversations)
end

def conversation_read(%{assigns: %{user: user}} = conn, %{"id" => participation_id}) do
with %Participation{} = participation <-
Repo.get_by(Participation, id: participation_id, user_id: user.id),
{:ok, participation} <- Participation.mark_as_read(participation) do
conn
|> json(%{
id: participation.id,
# TODO: Add this.
accounts: [],
unread: !participation.read,
# TODO: Add this.
last_status: nil
})
end
end

def try_render(conn, target, params) def try_render(conn, target, params)
when is_binary(target) do when is_binary(target) do
res = render(conn, target, params) res = render(conn, target, params)


+ 1
- 1
lib/pleroma/web/router.ex View File

@@ -273,7 +273,7 @@ defmodule Pleroma.Web.Router do
get("/suggestions", MastodonAPIController, :suggestions) get("/suggestions", MastodonAPIController, :suggestions)


get("/conversations", MastodonAPIController, :conversations) get("/conversations", MastodonAPIController, :conversations)
get("/conversations/:id/read", MastodonAPIController, :get_conversation)
post("/conversations/:id/read", MastodonAPIController, :conversation_read)


get("/endorsements", MastodonAPIController, :empty_array) get("/endorsements", MastodonAPIController, :empty_array)




+ 14
- 10
test/web/mastodon_api/mastodon_api_controller_test.exs View File

@@ -325,14 +325,17 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do


assert response = json_response(res_conn, 200) assert response = json_response(res_conn, 200)


assert %{
"id" => res_id,
"accounts" => res_accounts,
"last_status" => res_last_status,
"unread" => unread
} = response
assert [
%{
"id" => res_id,
"accounts" => res_accounts,
"last_status" => res_last_status,
"unread" => unread
}
] = response


assert unread == false
assert unread == true
assert res_last_status == direct.id


# Apparently undocumented API endpoint # Apparently undocumented API endpoint
res_conn = res_conn =
@@ -340,15 +343,16 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|> assign(:user, user_one) |> assign(:user, user_one)
|> post("/api/v1/conversations/#{res_id}/read") |> post("/api/v1/conversations/#{res_id}/read")


assert response == json_response(res_conn, 200)
assert response = json_response(res_conn, 200)
assert response["unread"] == false


# (vanilla) Mastodon frontend behaviour # (vanilla) Mastodon frontend behaviour
res_conn = res_conn =
conn conn
|> assign(:user, user_one) |> assign(:user, user_one)
|> get("/api/v1/statuses/#{res_last_status.id}/context")
|> get("/api/v1/statuses/#{res_last_status}/context")


assert %{ancestors: [], descendants: []} == json_response(res_conn, 200)
assert %{"ancestors" => [], "descendants" => []} == json_response(res_conn, 200)
end end


test "doesn't include DMs from blocked users", %{conn: conn} do test "doesn't include DMs from blocked users", %{conn: conn} do


Loading…
Cancel
Save