Participations: Add marking as read and unread.

This commit is contained in:
lain 2019-04-10 15:12:01 +02:00
parent d1da6b155a
commit 64c1c3a407
3 changed files with 43 additions and 0 deletions

View File

@ -28,4 +28,22 @@ def create_for_user_and_conversation(user, conversation) do
|> creation_cng(%{user_id: user.id, conversation_id: conversation.id}) |> creation_cng(%{user_id: user.id, conversation_id: conversation.id})
|> Repo.insert() |> Repo.insert()
end end
def read_cng(struct, params) do
struct
|> cast(params, [:read])
|> validate_required([:read])
end
def mark_as_read(participation) do
participation
|> read_cng(%{read: true})
|> Repo.update()
end
def mark_as_unread(participation) do
participation
|> read_cng(%{read: false})
|> Repo.update()
end
end end

View File

@ -19,4 +19,18 @@ test "it creates a participation for a conversation and a user" do
assert participation.user_id == user.id assert participation.user_id == user.id
assert participation.conversation_id == conversation.id assert participation.conversation_id == conversation.id
end end
test "it marks a participation as read" do
participation = insert(:participation, %{read: false})
{:ok, participation} = Participation.mark_as_read(participation)
assert participation.read
end
test "it marks a participation as unread" do
participation = insert(:participation, %{read: true})
{:ok, participation} = Participation.mark_as_unread(participation)
refute participation.read
end
end end

View File

@ -5,6 +5,17 @@
defmodule Pleroma.Factory do defmodule Pleroma.Factory do
use ExMachina.Ecto, repo: Pleroma.Repo use ExMachina.Ecto, repo: Pleroma.Repo
def participation_factory do
conversation = insert(:conversation)
user = insert(:user)
%Pleroma.Conversation.Participation{
conversation: conversation,
user: user,
read: false
}
end
def conversation_factory do def conversation_factory do
%Pleroma.Conversation{ %Pleroma.Conversation{
ap_id: sequence(:ap_id, &"https://some_conversation/#{&1}") ap_id: sequence(:ap_id, &"https://some_conversation/#{&1}")