Conversations: Create or bump on inserting a dm.
[akkoma] / test / conversation / participation_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Conversation.ParticipationTest do
6 use Pleroma.DataCase
7 import Pleroma.Factory
8 alias Pleroma.Conversation.Participation
9
10 test "it creates a participation for a conversation and a user" do
11 user = insert(:user)
12 conversation = insert(:conversation)
13
14 {:ok, %Participation{} = participation} =
15 Participation.create_for_user_and_conversation(user, conversation)
16
17 assert participation.user_id == user.id
18 assert participation.conversation_id == conversation.id
19
20 :timer.sleep(1000)
21 # Creating again returns the same participation
22 {:ok, %Participation{} = participation_two} =
23 Participation.create_for_user_and_conversation(user, conversation)
24
25 assert participation.id == participation_two.id
26 refute participation.updated_at == participation_two.updated_at
27 end
28
29 test "recreating an existing participations sets it to unread" do
30 participation = insert(:participation, %{read: true})
31
32 {:ok, participation} =
33 Participation.create_for_user_and_conversation(
34 participation.user,
35 participation.conversation
36 )
37
38 refute participation.read
39 end
40
41 test "it marks a participation as read" do
42 participation = insert(:participation, %{read: false})
43 {:ok, participation} = Participation.mark_as_read(participation)
44
45 assert participation.read
46 end
47
48 test "it marks a participation as unread" do
49 participation = insert(:participation, %{read: true})
50 {:ok, participation} = Participation.mark_as_unread(participation)
51
52 refute participation.read
53 end
54 end