Fix #5073: Navigating search containing pool tag only uses pool

Show the search navbar when searching for `pool:1234 tag`. Before the
search navbar would always be hidden if the search contained a pool:
metatag, even if it was a multi-tag search.
This commit is contained in:
evazion
2022-08-28 23:03:05 -05:00
parent 4448b3d15b
commit e1df93c4dc
2 changed files with 20 additions and 2 deletions

View File

@@ -37,17 +37,19 @@ class PostNavbarComponent < ApplicationComponent
end
def selected_pool
return nil unless query.is_metatag?(:pool) || query.is_metatag?(:ordpool)
value = query.find_metatag(:pool, :ordpool)
Pool.find_by_name(value) if value.present?
end
def selected_favgroup
return nil unless query.is_metatag?(:favgroup) || query.is_metatag?(:ordfavgroup)
value = query.find_metatag(:favgroup, :ordfavgroup)
FavoriteGroup.find_by_name_or_id(value, current_user) if value.present?
end
def query
@query ||= PostQuery.new(search)
@query ||= PostQuery.new(search).trim
end
memoize :favgroups, :selected_pool, :selected_favgroup

View File

@@ -24,7 +24,7 @@ class PostNavbarComponentTest < ViewComponent::TestCase
as(@user) do
@pool1 = create(:pool, category: "series")
@pool2 = create(:pool, category: "collection")
@post.update(tag_string: "pool:#{@pool1.id} pool:#{@pool2.id}")
@post.update(tag_string: "touhou pool:#{@pool1.id} pool:#{@pool2.id}")
end
end
@@ -48,6 +48,14 @@ class PostNavbarComponentTest < ViewComponent::TestCase
assert_css(".pool-navbar[data-selected=true] .pool-name", text: "Pool: #{@pool1.pretty_name}")
assert_css(".pool-navbar[data-selected=false] .pool-name", text: "Pool: #{@pool2.pretty_name}")
end
should "show the search navbar when doing a 'pool:<name> + tag' search" do
render_post_navbar(@post, current_user: @user, search: "pool:#{@pool1.name} touhou")
assert_css(".search-navbar", text: "Search: pool:#{@pool1.name} touhou")
assert_css(".pool-navbar[data-selected=false] .pool-name", text: "Pool: #{@pool1.pretty_name}")
assert_css(".pool-navbar[data-selected=false] .pool-name", text: "Pool: #{@pool2.pretty_name}")
end
end
context "for a post with favgroups" do
@@ -90,6 +98,14 @@ class PostNavbarComponentTest < ViewComponent::TestCase
assert_css(".favgroup-navbar .favgroup-name", count: 0)
end
should "show the search navbar when doing a 'favgroup:<id> + tag' search" do
render_post_navbar(@post, current_user: @user, search: "favgroup:#{@favgroup1.name} touhou")
assert_css(".search-navbar", text: "Search: favgroup:#{@favgroup1.name} touhou")
assert_css(".favgroup-navbar[data-selected=false] .favgroup-name", text: "Favgroup: #{@favgroup1.pretty_name}")
assert_css(".favgroup-navbar[data-selected=false] .favgroup-name", text: "Favgroup: #{@favgroup2.pretty_name}")
end
end
end
end