From 80f8d9186b9e2c5f06fc56dfbc757e75a57b17b9 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sat, 4 Dec 2021 16:58:16 -0500 Subject: Create a test for Home timeline query missing index --- .../web/activity_pub/activity_pub_query_test.exs | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 test/pleroma/web/activity_pub/activity_pub_query_test.exs diff --git a/test/pleroma/web/activity_pub/activity_pub_query_test.exs b/test/pleroma/web/activity_pub/activity_pub_query_test.exs new file mode 100644 index 000000000..ef0691acd --- /dev/null +++ b/test/pleroma/web/activity_pub/activity_pub_query_test.exs @@ -0,0 +1,44 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.ActivityPubQueryTest do + use Pleroma.DataCase + use Oban.Testing, repo: Pleroma.Repo + + alias Pleroma.Repo + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ActivityPub + + import Pleroma.Factory + + test "fetch_activities_query/2 indexes" do + # Add a few accounts for good measure + insert_list(3, :user) + + user = insert(:user) + follower = insert(:user) + + # Create a follower + User.follow(follower, user) + + # Same opts used by the Home timeline + opts = %{ + type: ["Create", "Announce"], + blocking_user: user, + muting_user: user, + reply_filtering_user: user, + announce_filtering_user: user, + user: user + } + + # I don't fully understand this but it's what the Home timeline does + recipients = [user.ap_id | User.following(user)] + + # Build the query + query = ActivityPub.fetch_activities_query(recipients, opts) + + # Performs an EXPLAIN, fail if it's a sequence scan + refute Repo.explain(:all, query) =~ "Seq Scan" + end +end -- cgit v1.2.3