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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user