1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Conversation.ParticipationTest do
8 alias Pleroma.Conversation.Participation
10 test "it creates a participation for a conversation and a user" do
12 conversation = insert(:conversation)
14 {:ok, %Participation{} = participation} =
15 Participation.create_for_user_and_conversation(user, conversation)
17 assert participation.user_id == user.id
18 assert participation.conversation_id == conversation.id
21 # Creating again returns the same participation
22 {:ok, %Participation{} = participation_two} =
23 Participation.create_for_user_and_conversation(user, conversation)
25 assert participation.id == participation_two.id
26 refute participation.updated_at == participation_two.updated_at
29 test "recreating an existing participations sets it to unread" do
30 participation = insert(:participation, %{read: true})
32 {:ok, participation} =
33 Participation.create_for_user_and_conversation(
35 participation.conversation
38 refute participation.read
41 test "it marks a participation as read" do
42 participation = insert(:participation, %{read: false})
43 {:ok, participation} = Participation.mark_as_read(participation)
45 assert participation.read
48 test "it marks a participation as unread" do
49 participation = insert(:participation, %{read: true})
50 {:ok, participation} = Participation.mark_as_unread(participation)
52 refute participation.read