From b9939c6356a4666a5d42cee3dcf58aa55c982cc9 Mon Sep 17 00:00:00 2001 From: evazion Date: Tue, 3 Mar 2020 04:26:39 -0600 Subject: [PATCH] Fix #4315: Disapproval messages aren't striped of spaces. Set blank disapproval messages to null to prevent them from showing up in wildcard searches. --- app/models/post_disapproval.rb | 9 +++++++-- test/factories/post_disapproval.rb | 1 + test/unit/post_disapproval_test.rb | 7 ++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/models/post_disapproval.rb b/app/models/post_disapproval.rb index 4f9a7a7b9..8fb5d04a5 100644 --- a/app/models/post_disapproval.rb +++ b/app/models/post_disapproval.rb @@ -6,8 +6,8 @@ class PostDisapproval < ApplicationRecord validates_uniqueness_of :post_id, :scope => [:user_id], :message => "have already hidden this post" validates_inclusion_of :reason, :in => %w(legacy breaks_rules poor_quality disinterest) - scope :with_message, -> {where("message is not null and message <> ''")} - scope :without_message, -> {where("message is null or message = ''")} + scope :with_message, -> { where.not(message: nil) } + scope :without_message, -> { where(message: nil) } scope :breaks_rules, -> {where(:reason => "breaks_rules")} scope :poor_quality, -> {where(:reason => "poor_quality")} scope :disinterest, -> {where(:reason => ["disinterest", "legacy"])} @@ -61,6 +61,11 @@ class PostDisapproval < ApplicationRecord [:user, :post] end + def message=(message) + message = nil if message.blank? + super(message) + end + def can_view_creator?(user) user.is_moderator? || user_id == user.id end diff --git a/test/factories/post_disapproval.rb b/test/factories/post_disapproval.rb index 686746198..38b1ae024 100644 --- a/test/factories/post_disapproval.rb +++ b/test/factories/post_disapproval.rb @@ -1,6 +1,7 @@ FactoryBot.define do factory(:post_disapproval) do user + post reason { %w(breaks_rules poor_quality disinterest).sample } message { FFaker::Lorem.sentence } end diff --git a/test/unit/post_disapproval_test.rb b/test/unit/post_disapproval_test.rb index e2fe42aef..7aaa5b8aa 100644 --- a/test/unit/post_disapproval_test.rb +++ b/test/unit/post_disapproval_test.rb @@ -19,6 +19,11 @@ class PostDisapprovalTest < ActiveSupport::TestCase @post_2 = FactoryBot.create(:post, :is_pending => true) end + should "not allow blank messages" do + @post_disapproval = create(:post_disapproval, message: "") + assert_equal(nil, @post_disapproval.message) + end + context "made by alice" do setup do @disapproval = PostDisapproval.create(:user => @alice, :post => @post_1) @@ -66,7 +71,7 @@ class PostDisapprovalTest < ActiveSupport::TestCase context "when sending dmails" do setup do - @uploaders = FactoryBot.create_list(:user, 2) + @uploaders = FactoryBot.create_list(:user, 2, created_at: 2.weeks.ago) @disapprovers = FactoryBot.create_list(:mod_user, 2) # 2 uploaders, with 2 uploads each, and 2 disapprovals on each upload.