summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>2019-01-10 16:07:32 +0100
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>2019-01-26 04:46:01 +0100
commit4ad0ad14ed2d8a10bbf642fd989b3f7f55f9017d (patch)
tree507cdba99b1037cbbb89d4ff8f973f27125b99c8
parentd8f446f438716cc1a474c9352e8cca8778a48d85 (diff)
downloadpleroma-4ad0ad14ed2d8a10bbf642fd989b3f7f55f9017d.tar.gz
pleroma-4ad0ad14ed2d8a10bbf642fd989b3f7f55f9017d.zip
Web.ActivityPub.ActivityPub: Simplify multi-hashtag, add tests
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex21
-rw-r--r--test/web/activity_pub/activity_pub_test.exs21
2 files changed, 24 insertions, 18 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index d414ecc46..62f4a33c8 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -430,30 +430,15 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
when is_list(tag) and tag_reject != [] do
from(
activity in query,
- where:
- fragment(
- "? && ARRAY(SELECT jsonb_array_elements_text((? #> '{\"object\",\"tag\"}')))",
- ^tag,
- activity.data
- ),
- where:
- fragment(
- "(not ? && ARRAY(SELECT jsonb_array_elements_text((? #> '{\"object\",\"tag\"}'))))",
- ^tag_reject,
- activity.data
- )
+ where: fragment("(? #> '{\"object\",\"tag\"}') \\?| ?", activity.data, ^tag),
+ where: fragment("(not (? #> '{\"object\",\"tag\"}') \\?| ?)", activity.data, ^tag_reject)
)
end
defp restrict_tag(query, %{"tag" => tag}) when is_list(tag) do
from(
activity in query,
- where:
- fragment(
- "? && ARRAY(SELECT jsonb_array_elements_text((? #> '{\"object\",\"tag\"}')))",
- ^tag,
- activity.data
- )
+ where: fragment("(? #> '{\"object\",\"tag\"}') \\?| ?", activity.data, ^tag)
)
end
diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs
index d2e54d804..acece36f0 100644
--- a/test/web/activity_pub/activity_pub_test.exs
+++ b/test/web/activity_pub/activity_pub_test.exs
@@ -64,6 +64,27 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
assert user.info.ap_enabled
assert user.follower_address == "http://mastodon.example.org/users/admin/followers"
end
+
+ test "it fetches the appropriate tag-restricted posts" do
+ user = insert(:user)
+
+ {:ok, status_one} = CommonAPI.post(user, %{"status" => ". #test"})
+ {:ok, status_two} = CommonAPI.post(user, %{"status" => ". #essais"})
+ {:ok, status_three} = CommonAPI.post(user, %{"status" => ". #test #reject"})
+
+ fetch_one = ActivityPub.fetch_activities([], %{"tag" => "test"})
+ fetch_two = ActivityPub.fetch_activities([], %{"tag" => ["test", "essais"]})
+
+ fetch_three =
+ ActivityPub.fetch_activities([], %{
+ "tag" => ["test", "essais"],
+ "tag_reject" => ["reject"]
+ })
+
+ assert fetch_one == [status_one, status_three]
+ assert fetch_two == [status_one, status_two, status_three]
+ assert fetch_three == [status_one, status_two]
+ end
end
describe "insertion" do