aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2019-04-10 17:48:31 +0200
committerlain <lain@soykaf.club>2019-04-10 17:48:31 +0200
commitc352a0aba601ae444bf5b479ab3c643728a8b35e (patch)
tree825af2db472a0a94c346a63e597c98bbb495c997
parentde57094fca505e7dbf1a84fef5fb31fae68f2709 (diff)
downloadpleroma-c352a0aba601ae444bf5b479ab3c643728a8b35e.tar.gz
Conversations: Make tests run.
-rw-r--r--lib/pleroma/web/mastodon_api/mastodon_api_controller.ex36
-rw-r--r--lib/pleroma/web/router.ex2
-rw-r--r--test/web/mastodon_api/mastodon_api_controller_test.exs24
3 files changed, 51 insertions, 11 deletions
diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
index 5462ce8be..57f73dacd 100644
--- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
+++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
@@ -8,6 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
alias Ecto.Changeset
alias Pleroma.Activity
alias Pleroma.Config
+ alias Pleroma.Conversation.Participation
alias Pleroma.Filter
alias Pleroma.Notification
alias Pleroma.Object
@@ -1584,6 +1585,41 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
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)
when is_binary(target) do
res = render(conn, target, params)
diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex
index 0af743b80..dc5119c50 100644
--- a/lib/pleroma/web/router.ex
+++ b/lib/pleroma/web/router.ex
@@ -273,7 +273,7 @@ defmodule Pleroma.Web.Router do
get("/suggestions", MastodonAPIController, :suggestions)
get("/conversations", MastodonAPIController, :conversations)
- get("/conversations/:id/read", MastodonAPIController, :get_conversation)
+ post("/conversations/:id/read", MastodonAPIController, :conversation_read)
get("/endorsements", MastodonAPIController, :empty_array)
diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs
index 519ad8f4d..d1d22edde 100644
--- a/test/web/mastodon_api/mastodon_api_controller_test.exs
+++ b/test/web/mastodon_api/mastodon_api_controller_test.exs
@@ -325,14 +325,17 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
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
res_conn =
@@ -340,15 +343,16 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|> assign(:user, user_one)
|> 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
res_conn =
conn
|> 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
test "doesn't include DMs from blocked users", %{conn: conn} do