Fix #4895: Deleted forum topics visible by default in index.

The bug was that since search parameters normally come from URL request
parameters, a string value is expected here.
This commit is contained in:
evazion
2021-10-01 17:13:59 -05:00
parent 6c7fbb96b3
commit ad523b3745
2 changed files with 10 additions and 1 deletions

View File

@@ -17,7 +17,7 @@ class ForumTopicsController < ApplicationController
def index def index
if request.format.html? if request.format.html?
limit = params.fetch(:limit, 40) limit = params.fetch(:limit, 40)
@forum_topics = authorize ForumTopic.visible(CurrentUser.user).paginated_search(params, limit: limit, defaults: { order: "sticky", is_deleted: false }) @forum_topics = authorize ForumTopic.visible(CurrentUser.user).paginated_search(params, limit: limit, defaults: { order: "sticky", is_deleted: "false" })
else else
@forum_topics = authorize ForumTopic.visible(CurrentUser.user).paginated_search(params) @forum_topics = authorize ForumTopic.visible(CurrentUser.user).paginated_search(params)
end end

View File

@@ -124,6 +124,15 @@ class ForumTopicsControllerTest < ActionDispatch::IntegrationTest
assert_equal(ForumTopic.visible(User.anonymous).count, response.parsed_body.css("urlset url loc").size) assert_equal(ForumTopic.visible(User.anonymous).count, response.parsed_body.css("urlset url loc").size)
end end
should "not show deleted topics for HTML responses by default" do
as(@user) { create(:forum_topic, is_deleted: true) }
get forum_topics_path
assert_response :success
assert_select 'tr[data-is-deleted="true"]', count: 0
assert_select 'tr[data-is-deleted="false"]', count: 3
end
context "with private topics" do context "with private topics" do
should "not show private topics to unprivileged users" do should "not show private topics to unprivileged users" do
as(@user) { @other_topic.update!(min_level: User::Levels::MODERATOR) } as(@user) { @other_topic.update!(min_level: User::Levels::MODERATOR) }