diff --git a/app/components/post_navbar_component.rb b/app/components/post_navbar_component.rb index 447838f4e..58efe659f 100644 --- a/app/components/post_navbar_component.rb +++ b/app/components/post_navbar_component.rb @@ -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 diff --git a/test/components/post_navbar_component_test.rb b/test/components/post_navbar_component_test.rb index 7fb396584..5c0e70b48 100644 --- a/test/components/post_navbar_component_test.rb +++ b/test/components/post_navbar_component_test.rb @@ -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: + 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: + 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