Participations: Add marking as read and unread.
This commit is contained in:
parent
d1da6b155a
commit
64c1c3a407
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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}")
|
||||||
|
|
Loading…
Reference in a new issue