diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index cef2edea1..565a73c62 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -324,8 +324,8 @@ class PostQueryBuilder def hide_deleted_posts?(q) return false if CurrentUser.admin_mode? - return false if q[:status].to_a.any?(%w[deleted active any all]) - return false if q[:status_neg].to_a.any?(%w[deleted active any all]) + return false if find_metatag("status").to_s.downcase.in?(%w[deleted active any all]) + return false if find_metatag("-status").to_s.downcase.in?(%w[deleted active any all]) return CurrentUser.user.hide_deleted_posts? end diff --git a/test/unit/post_query_builder_test.rb b/test/unit/post_query_builder_test.rb index 4288d93bd..7bb17b57f 100644 --- a/test/unit/post_query_builder_test.rb +++ b/test/unit/post_query_builder_test.rb @@ -500,15 +500,29 @@ class PostQueryBuilderTest < ActiveSupport::TestCase assert_tag_match([pending, flagged], "status:unmoderated") end - should "respect the 'Deleted post filter' option when using the status:banned metatag" do + should "respect the 'Deleted post filter' option when using the status: metatag" do deleted = create(:post, is_deleted: true, is_banned: true) undeleted = create(:post, is_banned: true) CurrentUser.hide_deleted_posts = true assert_tag_match([undeleted], "status:banned") + assert_tag_match([undeleted], "status:active") + assert_tag_match([deleted], "status:deleted") + assert_tag_match([undeleted, deleted], "status:any") + assert_tag_match([undeleted, deleted], "status:all") + + assert_tag_match([], "-status:banned") + assert_tag_match([deleted], "-status:active") + assert_tag_match([undeleted], "-status:deleted") + #assert_tag_match([deleted], "-status:any") # XXX Broken + #assert_tag_match([deleted], "-status:all") CurrentUser.hide_deleted_posts = false assert_tag_match([undeleted, deleted], "status:banned") + assert_tag_match([undeleted], "status:active") + assert_tag_match([deleted], "status:deleted") + assert_tag_match([undeleted, deleted], "status:any") + assert_tag_match([undeleted, deleted], "status:all") end should "return posts for the filetype: metatag" do