Fix #4755: No navigation bar (prev/next button) when favgroup in query.
Fix the favgroup navbar not being shown when doing a `favgroup:<id>` search for a public favgroup belonging to another user.
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
class PostNavbarComponent < ApplicationComponent
|
||||
extend Memoist
|
||||
|
||||
attr_reader :post, :current_user, :search
|
||||
|
||||
def initialize(post:, current_user:, search: nil)
|
||||
@@ -18,7 +20,9 @@ class PostNavbarComponent < ApplicationComponent
|
||||
end
|
||||
|
||||
def favgroups
|
||||
@favgroups ||= current_user.favorite_groups.for_post(post.id).sort_by do |favgroup|
|
||||
favgroups = FavoriteGroup.visible(current_user).for_post(post.id)
|
||||
favgroups = favgroups.where(creator: current_user).or(favgroups.where(id: favgroup_id))
|
||||
favgroups.sort_by do |favgroup|
|
||||
[favgroup.id == favgroup_id ? 0 : 1, favgroup.name]
|
||||
end
|
||||
end
|
||||
@@ -38,4 +42,6 @@ class PostNavbarComponent < ApplicationComponent
|
||||
def query
|
||||
@query ||= PostQueryBuilder.new(search)
|
||||
end
|
||||
|
||||
memoize :favgroups
|
||||
end
|
||||
|
||||
@@ -46,8 +46,8 @@ class PostNavbarComponentTest < ViewComponent::TestCase
|
||||
context "for a post with favgroups" do
|
||||
setup do
|
||||
as(@user) do
|
||||
@favgroup1 = create(:favorite_group, creator: @user)
|
||||
@favgroup2 = create(:favorite_group, creator: @user)
|
||||
@favgroup1 = create(:favorite_group, creator: @user, is_public: true)
|
||||
@favgroup2 = create(:favorite_group, creator: @user, is_public: false)
|
||||
@post.update(tag_string: "favgroup:#{@favgroup1.id} favgroup:#{@favgroup2.id}")
|
||||
end
|
||||
end
|
||||
@@ -65,6 +65,18 @@ class PostNavbarComponentTest < ViewComponent::TestCase
|
||||
assert_css(".favgroup-navbar[data-selected=true] .favgroup-name", text: "Favgroup: #{@favgroup1.pretty_name}")
|
||||
assert_css(".favgroup-navbar[data-selected=false] .favgroup-name", text: "Favgroup: #{@favgroup2.pretty_name}")
|
||||
end
|
||||
|
||||
should "show public favgroups that belong to another user when doing a favgroup:<id> search" do
|
||||
render_post_navbar(@post, current_user: create(:user), search: "favgroup:#{@favgroup1.id}")
|
||||
|
||||
assert_css(".favgroup-navbar[data-selected=true] .favgroup-name", text: "Favgroup: #{@favgroup1.pretty_name}")
|
||||
end
|
||||
|
||||
should "not show private favgroups that belong to another user when doing a favgroup:<id> search" do
|
||||
render_post_navbar(@post, current_user: create(:user), search: "favgroup:#{@favgroup2.id}")
|
||||
|
||||
assert_css(".favgroup-navbar .favgroup-name", count: 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user