aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2019-04-10 15:12:01 +0200
committerlain <lain@soykaf.club>2019-04-10 15:12:01 +0200
commit64c1c3a4071f3f99a59f38e2dcde499bda3969cf (patch)
tree29fac08359a71c047b4463a0b9e7dba8d4d886cf
parentd1da6b155ab758ae4eb8fa154997a0a2a179897c (diff)
downloadpleroma-64c1c3a4071f3f99a59f38e2dcde499bda3969cf.tar.gz
Participations: Add marking as read and unread.
-rw-r--r--lib/conversation/participation.ex18
-rw-r--r--test/conversation/participation_test.exs14
-rw-r--r--test/support/factory.ex11
3 files changed, 43 insertions, 0 deletions
diff --git a/lib/conversation/participation.ex b/lib/conversation/participation.ex
index 244d37c46..ab59a529e 100644
--- a/lib/conversation/participation.ex
+++ b/lib/conversation/participation.ex
@@ -28,4 +28,22 @@ defmodule Pleroma.Conversation.Participation do
|> creation_cng(%{user_id: user.id, conversation_id: conversation.id})
|> Repo.insert()
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
diff --git a/test/conversation/participation_test.exs b/test/conversation/participation_test.exs
index 8dc15a802..eae1873ca 100644
--- a/test/conversation/participation_test.exs
+++ b/test/conversation/participation_test.exs
@@ -19,4 +19,18 @@ defmodule Pleroma.Conversation.ParticipationTest do
assert participation.user_id == user.id
assert participation.conversation_id == conversation.id
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
diff --git a/test/support/factory.ex b/test/support/factory.ex
index af38be46c..2a2954ad6 100644
--- a/test/support/factory.ex
+++ b/test/support/factory.ex
@@ -5,6 +5,17 @@
defmodule Pleroma.Factory do
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
%Pleroma.Conversation{
ap_id: sequence(:ap_id, &"https://some_conversation/#{&1}")