Commit 6a150de3 authored by Karen Konou's avatar Karen Konou

Add unique index and unique constraint check, uniqueness test fails

parent 478a05b4
Pipeline #7339 passed with stages
in 4 minutes and 48 seconds
......@@ -13,12 +13,22 @@ defmodule Pleroma.Web.ThreadMute do
field(:context, :string)
end
def changeset(mute, params \\ %{}) do
mute
|> Ecto.Changeset.cast(params, [:user_id, :context])
|> Ecto.Changeset.foreign_key_constraint(:user_id)
|> Ecto.Changeset.unique_constraint(:user_id, name: :unique_index)
end
def add_mute(user, id) do
activity = Activity.get_by_id(id)
context = activity.data["context"]
mute = %Pleroma.Web.ThreadMute{user_id: user.id, context: context}
Repo.insert(mute)
{:ok, activity}
changeset = changeset(%Pleroma.Web.ThreadMute{}, %{user_id: user.id, context: context})
case Repo.insert(changeset) do
{:ok, _} -> {:ok, activity}
{:error, _} -> {:error, "conversation is already muted"}
end
end
def remove_mute(user, id) do
......
......@@ -7,6 +7,6 @@ defmodule Pleroma.Repo.Migrations.CreateThreadMutes do
add :context, :string
end
create index(:thread_mutes, [:user_id])
create unique_index(:thread_mutes, [:user_id, :context], name: :unique_index)
end
end
......@@ -18,17 +18,20 @@ defmodule Pleroma.Web.ThreadMuteTest do
end
test "add mute", %{user: user, activity: activity} do
id = activity.id
{:ok, _activity} = add_mute(user, id)
{:ok, _activity} = add_mute(user, activity.id)
assert muted?(user, activity)
end
test "remove mute", %{user: user, activity: activity} do
id = activity.id
add_mute(user, id)
{:ok, _activity} = remove_mute(user, id)
add_mute(user, activity.id)
{:ok, _activity} = remove_mute(user, activity.id)
refute muted?(user, activity)
end
test "check that mutes can't be duplicate", %{user: user, activity: activity} do
add_mute(user, activity.id)
assert muted?(user, activity)
{:error, _} = add_mute(user, activity.id)
end
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment