Chat: Fix missing chat id on second 'get'
authorlain <lain@soykaf.club>
Tue, 5 May 2020 18:07:47 +0000 (20:07 +0200)
committerlain <lain@soykaf.club>
Tue, 5 May 2020 18:07:47 +0000 (20:07 +0200)
lib/pleroma/chat.ex
test/chat_test.exs

index 6008196e4ed3286e927798bf3ec0d1ddd75cb421..1a092b9924f2be366f840f72798672b3008c08a6 100644 (file)
@@ -46,7 +46,8 @@ defmodule Pleroma.Chat do
     %__MODULE__{}
     |> creation_cng(%{user_id: user_id, recipient: recipient})
     |> Repo.insert(
-      on_conflict: :nothing,
+      # Need to set something, otherwise we get nothing back at all
+      on_conflict: [set: [recipient: recipient]],
       returning: true,
       conflict_target: [:user_id, :recipient]
     )
index 952598c87565402aa49a778ae18291ced58a41ad..943e481113b8418684decec332a6674f19c8e270 100644 (file)
@@ -26,13 +26,24 @@ defmodule Pleroma.ChatTest do
       assert chat.id
     end
 
-    test "it returns a chat for a user and recipient if it already exists" do
+    test "it returns and bumps a chat for a user and recipient if it already exists" do
       user = insert(:user)
       other_user = insert(:user)
 
       {:ok, chat} = Chat.bump_or_create(user.id, other_user.ap_id)
       {:ok, chat_two} = Chat.bump_or_create(user.id, other_user.ap_id)
 
+      assert chat.id == chat_two.id
+      assert chat_two.unread == 2
+    end
+
+    test "it returns a chat for a user and recipient if it already exists" do
+      user = insert(:user)
+      other_user = insert(:user)
+
+      {:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id)
+      {:ok, chat_two} = Chat.get_or_create(user.id, other_user.ap_id)
+
       assert chat.id == chat_two.id
     end