Merge pull request #5120 from nottalulah/favgroup-any
favgroups: allow favgroup:any/none searches
This commit is contained in:
@@ -1247,8 +1247,17 @@ class Post < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def favgroup_matches(query, current_user)
|
def favgroup_matches(query, current_user)
|
||||||
favgroup = FavoriteGroup.visible(current_user).name_or_id_matches(query, current_user)
|
case query.downcase
|
||||||
where(id: favgroup.select("unnest(post_ids)"))
|
when "none"
|
||||||
|
favgroups = FavoriteGroup.where(creator: current_user)
|
||||||
|
where.not(id: favgroups.select("unnest(post_ids)"))
|
||||||
|
when "any"
|
||||||
|
favgroups = FavoriteGroup.where(creator: current_user)
|
||||||
|
where(id: favgroups.select("unnest(post_ids)"))
|
||||||
|
else
|
||||||
|
favgroup = FavoriteGroup.visible(current_user).name_or_id_matches(query, current_user)
|
||||||
|
where(id: favgroup.select("unnest(post_ids)"))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def ordfavgroup_matches(query, current_user)
|
def ordfavgroup_matches(query, current_user)
|
||||||
|
|||||||
@@ -387,11 +387,14 @@ class PostQueryBuilderTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
assert_tag_match([post1], "favgroup:#{favgroup1.id}")
|
assert_tag_match([post1], "favgroup:#{favgroup1.id}")
|
||||||
assert_tag_match([post2], "favgroup:#{favgroup2.name}")
|
assert_tag_match([post2], "favgroup:#{favgroup2.name}")
|
||||||
|
assert_tag_match([post2, post1], "favgroup:any")
|
||||||
assert_tag_match([], "favgroup:#{favgroup3.name}")
|
assert_tag_match([], "favgroup:#{favgroup3.name}")
|
||||||
assert_tag_match([], "favgroup:dne")
|
assert_tag_match([], "favgroup:dne")
|
||||||
|
|
||||||
assert_tag_match([post3, post2], "-favgroup:#{favgroup1.id}")
|
assert_tag_match([post3, post2], "-favgroup:#{favgroup1.id}")
|
||||||
assert_tag_match([post3, post1], "-favgroup:#{favgroup2.name}")
|
assert_tag_match([post3, post1], "-favgroup:#{favgroup2.name}")
|
||||||
|
assert_tag_match([post3], "-favgroup:any")
|
||||||
|
assert_tag_match([post3], "favgroup:none")
|
||||||
assert_tag_match([post3, post2, post1], "-favgroup:#{favgroup3.name}")
|
assert_tag_match([post3, post2, post1], "-favgroup:#{favgroup3.name}")
|
||||||
assert_tag_match([post3, post2, post1], "-favgroup:dne")
|
assert_tag_match([post3, post2, post1], "-favgroup:dne")
|
||||||
|
|
||||||
@@ -405,6 +408,7 @@ class PostQueryBuilderTest < ActiveSupport::TestCase
|
|||||||
assert_tag_match([], "favgroup:#{favgroup1.name}")
|
assert_tag_match([], "favgroup:#{favgroup1.name}")
|
||||||
assert_tag_match([], "favgroup:#{favgroup2.name}")
|
assert_tag_match([], "favgroup:#{favgroup2.name}")
|
||||||
assert_tag_match([post3], "favgroup:#{favgroup3.name}")
|
assert_tag_match([post3], "favgroup:#{favgroup3.name}")
|
||||||
|
assert_tag_match([post3], "favgroup:any")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user