status search: prefer the status fetched by url over other results
authorrinpatch <rinpatch@sdf.org>
Mon, 9 Dec 2019 17:45:04 +0000 (20:45 +0300)
committerrinpatch <rinpatch@sdf.org>
Mon, 9 Dec 2019 17:45:04 +0000 (20:45 +0300)
lib/pleroma/activity/search.ex
test/web/mastodon_api/controllers/search_controller_test.exs

index f847ac2381faa0d25678aa79503a8cc1752ba24c..d30a5a6a57ac9a1e80a2644a15fe73bdcfb3af4c 100644 (file)
@@ -86,7 +86,7 @@ defmodule Pleroma.Activity.Search do
          {:ok, object} <- Fetcher.fetch_object_from_id(search_query),
          %Activity{} = activity <- Activity.get_create_by_object_ap_id(object.data["id"]),
          true <- Visibility.visible_for_user?(activity, user) do
-      activities ++ [activity]
+      [activity | activities]
     else
       _ -> activities
     end
index 7953fad62c197ada25def63fd8821988c7a19184..34deeba47c5cd4f5a4ad82d1d54cc92cabf09997 100644 (file)
@@ -165,15 +165,20 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do
       assert status["id"] == to_string(activity.id)
     end
 
-    test "search fetches remote statuses", %{conn: conn} do
+    test "search fetches remote statuses and prefers them over other results", %{conn: conn} do
       capture_log(fn ->
+        {:ok, %{id: activity_id}} =
+          CommonAPI.post(insert(:user), %{
+            "status" => "check out https://shitposter.club/notice/2827873"
+          })
+
         conn =
           conn
           |> get("/api/v1/search", %{"q" => "https://shitposter.club/notice/2827873"})
 
         assert results = json_response(conn, 200)
 
-        [status] = results["statuses"]
+        [status, %{"id" => ^activity_id}] = results["statuses"]
 
         assert status["uri"] ==
                  "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment"