Skip to content
Snippets Groups Projects
Commit e914eeb6 authored by kaniini's avatar kaniini
Browse files

Merge branch 'user-follow-all-unique' into 'develop'

User.follow_all: ensure the following array stays unique

See merge request pleroma/pleroma!750
parents 44913c10 308b35eb
No related branches found
No related tags found
No related merge requests found
......@@ -315,7 +315,16 @@ defmodule Pleroma.User do
q =
from(u in User,
where: u.id == ^follower.id,
update: [set: [following: fragment("array_cat(?, ?)", u.following, ^followed_addresses)]]
update: [
set: [
following:
fragment(
"array(select distinct unnest (array_cat(?, ?)))",
u.following,
^followed_addresses
)
]
]
)
{1, [follower]} = Repo.update_all(q, [], returning: true)
......
......@@ -65,6 +65,19 @@ defmodule Pleroma.UserTest do
refute User.following?(user, not_followed)
end
test "follow_all follows mutliple users without duplicating" do
user = insert(:user)
followed_zero = insert(:user)
followed_one = insert(:user)
followed_two = insert(:user)
{:ok, user} = User.follow_all(user, [followed_zero, followed_one])
assert length(user.following) == 3
{:ok, user} = User.follow_all(user, [followed_one, followed_two])
assert length(user.following) == 4
end
test "follow takes a user and another user" do
user = insert(:user)
followed = insert(:user)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment