Chat: Fix missing chat id on second 'get'

This commit is contained in:
lain 2020-05-05 20:07:47 +02:00
parent c23cb8d37a
commit 9637cded21
2 changed files with 14 additions and 2 deletions

View file

@ -46,7 +46,8 @@ def get_or_create(user_id, recipient) do
%__MODULE__{} %__MODULE__{}
|> creation_cng(%{user_id: user_id, recipient: recipient}) |> creation_cng(%{user_id: user_id, recipient: recipient})
|> Repo.insert( |> Repo.insert(
on_conflict: :nothing, # Need to set something, otherwise we get nothing back at all
on_conflict: [set: [recipient: recipient]],
returning: true, returning: true,
conflict_target: [:user_id, :recipient] conflict_target: [:user_id, :recipient]
) )

View file

@ -26,13 +26,24 @@ test "it creates a chat for a user and recipient" do
assert chat.id assert chat.id
end 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) user = insert(:user)
other_user = insert(:user) other_user = insert(:user)
{:ok, chat} = Chat.bump_or_create(user.id, other_user.ap_id) {: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) {: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 assert chat.id == chat_two.id
end end