diff options
author | Haelwenn (lanodan) Monnier <contact@hacktivis.me> | 2019-01-10 16:07:32 +0100 |
---|---|---|
committer | Haelwenn (lanodan) Monnier <contact@hacktivis.me> | 2019-01-26 04:46:01 +0100 |
commit | 4ad0ad14ed2d8a10bbf642fd989b3f7f55f9017d (patch) | |
tree | 507cdba99b1037cbbb89d4ff8f973f27125b99c8 | |
parent | d8f446f438716cc1a474c9352e8cca8778a48d85 (diff) | |
download | pleroma-4ad0ad14ed2d8a10bbf642fd989b3f7f55f9017d.tar.gz pleroma-4ad0ad14ed2d8a10bbf642fd989b3f7f55f9017d.zip |
Web.ActivityPub.ActivityPub: Simplify multi-hashtag, add tests
-rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 21 | ||||
-rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 21 |
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 |