From fdb98715b8e6ced7c4037b1292fb10980a994803 Mon Sep 17 00:00:00 2001
From: lain <lain@soykaf.club>
Date: Mon, 11 May 2020 10:58:14 +0200
Subject: [PATCH] Chat: Fix wrong query.

---
 lib/pleroma/chat.ex |  1 +
 test/chat_test.exs  | 17 +++++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/lib/pleroma/chat.ex b/lib/pleroma/chat.ex
index 6a03ee3c1..4c92a58c7 100644
--- a/lib/pleroma/chat.ex
+++ b/lib/pleroma/chat.ex
@@ -29,6 +29,7 @@ defmodule Pleroma.Chat do
   def last_message_for_chat(chat) do
     messages_for_chat_query(chat)
     |> order_by(desc: :id)
+    |> limit(1)
     |> Repo.one()
   end
 
diff --git a/test/chat_test.exs b/test/chat_test.exs
index 943e48111..dfcb6422e 100644
--- a/test/chat_test.exs
+++ b/test/chat_test.exs
@@ -6,9 +6,26 @@ defmodule Pleroma.ChatTest do
   use Pleroma.DataCase, async: true
 
   alias Pleroma.Chat
+  alias Pleroma.Web.CommonAPI
 
   import Pleroma.Factory
 
+  describe "messages" do
+    test "it returns the last message in a chat" do
+      user = insert(:user)
+      recipient = insert(:user)
+
+      {:ok, _message_1} = CommonAPI.post_chat_message(user, recipient, "hey")
+      {:ok, _message_2} = CommonAPI.post_chat_message(recipient, user, "ho")
+
+      {:ok, chat} = Chat.get_or_create(user.id, recipient.ap_id)
+
+      message = Chat.last_message_for_chat(chat)
+
+      assert message.data["content"] == "ho"
+    end
+  end
+
   describe "creation and getting" do
     test "it only works if the recipient is a valid user (for now)" do
       user = insert(:user)