Conversations: Make tests run.
This commit is contained in:
parent
de57094fca
commit
c352a0aba6
3 changed files with 51 additions and 11 deletions
|
@ -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 @@ def reports(%{assigns: %{user: user}} = conn, params) 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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -325,14 +325,17 @@ test "Conversations", %{conn: conn} do
|
||||||
|
|
||||||
assert response = json_response(res_conn, 200)
|
assert response = json_response(res_conn, 200)
|
||||||
|
|
||||||
assert %{
|
assert [
|
||||||
"id" => res_id,
|
%{
|
||||||
"accounts" => res_accounts,
|
"id" => res_id,
|
||||||
"last_status" => res_last_status,
|
"accounts" => res_accounts,
|
||||||
"unread" => unread
|
"last_status" => res_last_status,
|
||||||
} = response
|
"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 @@ test "Conversations", %{conn: conn} 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…
Reference in a new issue