From 91ee3fb6e3fc0a2ce63a087a02d0e5fb82357fc0 Mon Sep 17 00:00:00 2001
From: Roman Rizzi <rizziromanalejandro@gmail.com>
Date: Wed, 26 May 2021 13:16:16 -0300
Subject: [PATCH] FIX: Use a better default for the low_priority_threshold
 setting. (#13161)

Using 1 as the default value is confusing for some people as low-score flags are hidden unless staff uses the "(any)" priority filter. Let's change it to 0 and let every site adjust the setting to match their needs.
---
 config/site_settings.yml                |  4 +-
 spec/jobs/reviewable_priorities_spec.rb | 60 ++++++++++++++-----------
 2 files changed, 35 insertions(+), 29 deletions(-)

diff --git a/config/site_settings.yml b/config/site_settings.yml
index ea2569b5f00..1672d579d0e 100644
--- a/config/site_settings.yml
+++ b/config/site_settings.yml
@@ -1714,8 +1714,8 @@ spam:
     default: low
     enum: "ReviewablePrioritySetting"
   reviewable_low_priority_threshold:
-    default: 1
-    min: 1
+    default: 0
+    min: 0
 
 rate_limits:
   unique_posts_mins: 5
diff --git a/spec/jobs/reviewable_priorities_spec.rb b/spec/jobs/reviewable_priorities_spec.rb
index 65f232fee1a..90dca2dc58b 100644
--- a/spec/jobs/reviewable_priorities_spec.rb
+++ b/spec/jobs/reviewable_priorities_spec.rb
@@ -40,41 +40,47 @@ describe Jobs::ReviewablePriorities do
     expect(Reviewable.score_required_to_hide_post).to eq(8.33)
   end
 
-  it "will set priorities based on the maximum score" do
-    create_reviewables(Jobs::ReviewablePriorities.min_reviewables)
+  context 'when there are enough reviewables' do
+    let(:medium_threshold) { 8.0 }
+    let(:high_threshold) { 13.0 }
+    let(:score_to_hide_post) { 8.66 }
 
-    Jobs::ReviewablePriorities.new.execute({})
+    it "will set priorities based on the maximum score" do
+      create_reviewables(Jobs::ReviewablePriorities.min_reviewables)
 
-    expect_min_score(:low, SiteSetting.reviewable_low_priority_threshold)
-    expect_min_score(:medium, 9.0)
-    expect_min_score(:high, 14.0)
-    expect(Reviewable.score_required_to_hide_post).to eq(9.33)
-  end
+      Jobs::ReviewablePriorities.new.execute({})
 
-  it 'ignore negative scores when calculating priorities' do
-    create_reviewables(Jobs::ReviewablePriorities.min_reviewables)
-    negative_score = -9
-    10.times { create_with_score(negative_score) }
+      expect_min_score(:low, SiteSetting.reviewable_low_priority_threshold)
+      expect_min_score(:medium, medium_threshold)
+      expect_min_score(:high, high_threshold)
+      expect(Reviewable.score_required_to_hide_post).to eq(score_to_hide_post)
+    end
 
-    Jobs::ReviewablePriorities.new.execute({})
+    it 'ignore negative scores when calculating priorities' do
+      create_reviewables(Jobs::ReviewablePriorities.min_reviewables)
+      negative_score = -9
+      10.times { create_with_score(negative_score) }
 
-    expect_min_score(:low, SiteSetting.reviewable_low_priority_threshold)
-    expect_min_score(:medium, 9.0)
-    expect_min_score(:high, 14.0)
-    expect(Reviewable.score_required_to_hide_post).to eq(9.33)
-  end
+      Jobs::ReviewablePriorities.new.execute({})
 
-  it 'ignores non-approved reviewables' do
-    create_reviewables(Jobs::ReviewablePriorities.min_reviewables)
-    low_score = 2
-    10.times { create_with_score(low_score, status: :pending) }
+      expect_min_score(:low, SiteSetting.reviewable_low_priority_threshold)
+      expect_min_score(:medium, medium_threshold)
+      expect_min_score(:high, high_threshold)
+      expect(Reviewable.score_required_to_hide_post).to eq(score_to_hide_post)
+    end
 
-    Jobs::ReviewablePriorities.new.execute({})
+    it 'ignores non-approved reviewables' do
+      create_reviewables(Jobs::ReviewablePriorities.min_reviewables)
+      low_score = 2
+      10.times { create_with_score(low_score, status: :pending) }
 
-    expect_min_score(:low, SiteSetting.reviewable_low_priority_threshold)
-    expect_min_score(:medium, 9.0)
-    expect_min_score(:high, 14.0)
-    expect(Reviewable.score_required_to_hide_post).to eq(9.33)
+      Jobs::ReviewablePriorities.new.execute({})
+
+      expect_min_score(:low, SiteSetting.reviewable_low_priority_threshold)
+      expect_min_score(:medium, medium_threshold)
+      expect_min_score(:high, high_threshold)
+      expect(Reviewable.score_required_to_hide_post).to eq(score_to_hide_post)
+    end
   end
 
   def expect_min_score(priority, score)