From 98c9affc485a3d23d53cead9e6e40e837e467eae Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 18 Oct 2019 14:33:51 +0300 Subject: Add a test for safe_jsonb_set --- test/safe_jsonb_set_test.exs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 test/safe_jsonb_set_test.exs (limited to 'test') diff --git a/test/safe_jsonb_set_test.exs b/test/safe_jsonb_set_test.exs new file mode 100644 index 000000000..748540570 --- /dev/null +++ b/test/safe_jsonb_set_test.exs @@ -0,0 +1,12 @@ +defmodule Pleroma.SafeJsonbSetTest do + use Pleroma.DataCase + + test "it doesn't wipe the object when asked to set the value to NULL" do + assert %{rows: [[%{"key" => "value", "test" => nil}]]} = + Ecto.Adapters.SQL.query!( + Pleroma.Repo, + "select safe_jsonb_set('{\"key\": \"value\"}'::jsonb, '{test}', NULL);", + [] + ) + end +end -- cgit v1.2.3 From 713b2187b93ebda5533e67173d82745eb15ba650 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 16 Oct 2019 12:52:47 +0300 Subject: User search: Remove trigram and refactor the module - Remove trigram as it tends to rank garbage results highly, resulting in it prioritized above fts, which gives actually decent results. ACKed by kaniini and lain on irc. - Remove a test for handling misspelled requests, since we no longer have trigram - Remove a test for searching users with `nil` display names, because it is unrealistic, we don't accept usernames that are not >1 char strings - Make rank boosting for followers/followees sane again, previous values resulted in garbage matches getting on top just because the users are followers/followees --- test/user_search_test.exs | 17 ----------------- 1 file changed, 17 deletions(-) (limited to 'test') diff --git a/test/user_search_test.exs b/test/user_search_test.exs index 48ce973ad..341074031 100644 --- a/test/user_search_test.exs +++ b/test/user_search_test.exs @@ -74,12 +74,6 @@ defmodule Pleroma.UserSearchTest do assert [u4.id, u3.id, u1.id] == Enum.map(User.search("lain@ple", for_user: u1), & &1.id) end - test "finds users, handling misspelled requests" do - u1 = insert(:user, %{name: "lain"}) - - assert [u1.id] == Enum.map(User.search("laiin"), & &1.id) - end - test "finds users, boosting ranks of friends and followers" do u1 = insert(:user) u2 = insert(:user, %{name: "Doe"}) @@ -163,17 +157,6 @@ defmodule Pleroma.UserSearchTest do Pleroma.Config.put([:instance, :limit_to_local_content], :unauthenticated) end - test "finds a user whose name is nil" do - _user = insert(:user, %{name: "notamatch", nickname: "testuser@pleroma.amplifie.red"}) - user_two = insert(:user, %{name: nil, nickname: "lain@pleroma.soykaf.com"}) - - assert user_two == - User.search("lain@pleroma.soykaf.com") - |> List.first() - |> Map.put(:search_rank, nil) - |> Map.put(:search_type, nil) - end - test "does not yield false-positive matches" do insert(:user, %{name: "John Doe"}) -- cgit v1.2.3 From eca86330b4b1e834c14c4765469bf7238ffa0018 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 16 Oct 2019 15:09:39 +0300 Subject: Remove a failing search test due to it being unrealistic While the case tested (`lain@ple`) gives wrong ordering due to using only trigram to order, it almost never happens in reality. In reality it would be either `lain` (in which case it's fine to list the user with `lain` in display name first), or `@lain@pleroma.soykaf.com`/`lain@pleroma.soykaf.com` (which is handled fine as well) --- test/user_search_test.exs | 9 --------- 1 file changed, 9 deletions(-) (limited to 'test') diff --git a/test/user_search_test.exs b/test/user_search_test.exs index 341074031..6ee624929 100644 --- a/test/user_search_test.exs +++ b/test/user_search_test.exs @@ -65,15 +65,6 @@ defmodule Pleroma.UserSearchTest do assert [u2.id, u1.id] == Enum.map(User.search("bar word"), & &1.id) end - test "finds users, ranking by similarity" do - u1 = insert(:user, %{name: "lain"}) - _u2 = insert(:user, %{name: "ean"}) - u3 = insert(:user, %{name: "ebn", nickname: "lain@mastodon.social"}) - u4 = insert(:user, %{nickname: "lain@pleroma.soykaf.com"}) - - assert [u4.id, u3.id, u1.id] == Enum.map(User.search("lain@ple", for_user: u1), & &1.id) - end - test "finds users, boosting ranks of friends and followers" do u1 = insert(:user) u2 = insert(:user, %{name: "Doe"}) -- cgit v1.2.3