logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 19fbfbb767169b58a8f6558d0ad1a9be6425b59d
parent: 86151b23a6c3e51ae4eb7c5ed77a8f090e7fa139
Author: lain <lain@soykaf.club>
Date:   Fri,  3 Jul 2020 14:38:22 +0000

Merge branch '1892-exclude-bots-from-search-results' into 'develop'

[#1892] Exclusion of service actors from user search results

Closes #1892

See merge request pleroma/pleroma!2708

Diffstat:

Mlib/pleroma/user/search.ex5+++++
Mtest/user_search_test.exs11++++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex @@ -52,6 +52,7 @@ defmodule Pleroma.User.Search do |> base_query(following) |> filter_blocked_user(for_user) |> filter_invisible_users() + |> filter_internal_users() |> filter_blocked_domains(for_user) |> fts_search(query_string) |> trigram_rank(query_string) @@ -109,6 +110,10 @@ defmodule Pleroma.User.Search do from(q in query, where: q.invisible == false) end + defp filter_internal_users(query) do + from(q in query, where: q.actor_type != "Application") + end + defp filter_blocked_user(query, %User{} = blocker) do query |> join(:left, [u], b in Pleroma.UserRelationship, diff --git a/test/user_search_test.exs b/test/user_search_test.exs @@ -17,7 +17,7 @@ defmodule Pleroma.UserSearchTest do describe "User.search" do setup do: clear_config([:instance, :limit_to_local_content]) - test "excluded invisible users from results" do + test "excludes invisible users from results" do user = insert(:user, %{nickname: "john t1000"}) insert(:user, %{invisible: true, nickname: "john t800"}) @@ -25,6 +25,15 @@ defmodule Pleroma.UserSearchTest do assert found_user.id == user.id end + test "excludes service actors from results" do + insert(:user, actor_type: "Application", nickname: "user1") + service = insert(:user, actor_type: "Service", nickname: "user2") + person = insert(:user, actor_type: "Person", nickname: "user3") + + assert [found_user1, found_user2] = User.search("user") + assert [found_user1.id, found_user2.id] -- [service.id, person.id] == [] + end + test "accepts limit parameter" do Enum.each(0..4, &insert(:user, %{nickname: "john#{&1}"})) assert length(User.search("john", limit: 3)) == 3