Migrate score settings to use sensitivities

We hide scores so these settings no longer made sense.
This commit is contained in:
Robin Ward
2019-05-24 14:13:03 -04:00
parent fad5d9c49b
commit 89b84651c3
14 changed files with 182 additions and 39 deletions

View File

@@ -12,8 +12,9 @@ describe "spam rules for users" do
fab!(:user2) { Fabricate(:user) }
before do
SiteSetting.score_required_to_hide_post = 0
SiteSetting.spam_score_to_silence_new_user = 4.0
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:disabled]
Reviewable.set_priorities(high: 4.0)
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:low]
SiteSetting.num_users_to_silence_new_user = 2
end
@@ -73,9 +74,10 @@ describe "spam rules for users" do
end
end
context 'score_required_to_hide_post takes effect too' do
context 'hide_post_sensitivity' do
it 'should silence the spammer' do
SiteSetting.score_required_to_hide_post = 2.0
Reviewable.set_priorities(high: 2.0)
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:low]
PostActionCreator.create(user2, spam_post, :spam)
expect(spammer.reload).to be_silenced
expect(Guardian.new(spammer).can_create_topic?(nil)).to be false

View File

@@ -517,7 +517,8 @@ describe PostAction do
mod = Fabricate(:moderator)
post = Fabricate(:post, user: mod)
SiteSetting.score_required_to_hide_post = 2.0
Reviewable.set_priorities(high: 2.0)
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:low]
Discourse.stubs(:site_contact_user).returns(admin)
PostActionCreator.spam(eviltrout, post)
@@ -531,7 +532,8 @@ describe PostAction do
mod = Fabricate(:moderator)
post = Fabricate(:post, user: mod)
SiteSetting.score_required_to_hide_post = 8.0
Reviewable.set_priorities(high: 8.0)
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:low]
Discourse.stubs(:site_contact_user).returns(admin)
PostActionCreator.spam(eviltrout, post)
@@ -547,7 +549,8 @@ describe PostAction do
post = create_post
walterwhite = Fabricate(:walter_white)
SiteSetting.score_required_to_hide_post = 3.0
Reviewable.set_priorities(high: 3.0)
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:low]
Discourse.stubs(:site_contact_user).returns(admin)
PostActionCreator.spam(eviltrout, post)
@@ -707,8 +710,9 @@ describe PostAction do
fab!(:flagger2) { Fabricate(:user) }
before do
SiteSetting.score_required_to_hide_post = 0
SiteSetting.score_to_auto_close_topic = 12.0
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:disabled]
Reviewable.set_priorities(high: 4.5)
SiteSetting.auto_close_topic_sensitivity = Reviewable.sensitivity[:low]
SiteSetting.num_flaggers_to_close_topic = 2
SiteSetting.num_hours_to_close_topic = 1
end
@@ -769,7 +773,8 @@ describe PostAction do
freeze_time
SiteSetting.num_flaggers_to_close_topic = 1
SiteSetting.score_to_auto_close_topic = 2.0
Reviewable.set_priorities(high: 0.5)
SiteSetting.auto_close_topic_sensitivity = Reviewable.sensitivity[:low]
post = Fabricate(:post, topic: topic)
PostActionCreator.spam(flagger1, post)
@@ -792,7 +797,8 @@ describe PostAction do
freeze_time timer.execute_at
SiteSetting.num_flaggers_to_close_topic = 10
SiteSetting.score_to_auto_close_topic = 20.0
Reviewable.set_priorities(high: 10.0)
SiteSetting.auto_close_topic_sensitivity = Reviewable.sensitivity[:low]
Jobs::ToggleTopicClosed.new.execute(topic_timer_id: timer.id, state: false)

View File

@@ -87,7 +87,8 @@ RSpec.describe ReviewableQueuedPost, type: :model do
newuser.update!(trust_level: 0)
post = Fabricate(:post, user: newuser)
PostActionCreator.spam(moderator, post)
SiteSetting.spam_score_to_silence_new_user = 1
Reviewable.set_priorities(high: 1.0)
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:low]
SiteSetting.num_users_to_silence_new_user = 1
expect(Guardian.new(newuser).can_create_post?(topic)).to eq(false)

View File

@@ -282,6 +282,73 @@ RSpec.describe Reviewable, type: :model do
end
end
context ".score_required_to_hide_post" do
it "returns 10 if we can't calculated any percentiles" do
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:low]
expect(Reviewable.score_required_to_hide_post).to eq(10.0)
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:medium]
expect(Reviewable.score_required_to_hide_post).to eq(10.0)
end
it "returns a fraction of the high percentile" do
Reviewable.set_priorities(high: 100.0)
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:disabled]
expect(Reviewable.score_required_to_hide_post.to_f.truncate(2)).to eq(Float::MAX)
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:low]
expect(Reviewable.score_required_to_hide_post.to_f.truncate(2)).to eq(100.0)
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:medium]
expect(Reviewable.score_required_to_hide_post.to_f.truncate(2)).to eq(66.66)
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:high]
expect(Reviewable.score_required_to_hide_post.to_f.truncate(2)).to eq(33.33)
end
end
context ".spam_score_to_silence_new_user" do
it "returns 6 if we can't calculated any percentiles" do
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:low]
expect(Reviewable.spam_score_to_silence_new_user).to eq(6.0)
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:medium]
expect(Reviewable.spam_score_to_silence_new_user).to eq(6.0)
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:high]
expect(Reviewable.spam_score_to_silence_new_user).to eq(6.0)
end
it "returns a fraction of the high percentile" do
Reviewable.set_priorities(high: 100.0)
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:disabled]
expect(Reviewable.spam_score_to_silence_new_user.to_f.truncate(2)).to eq(Float::MAX)
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:low]
expect(Reviewable.spam_score_to_silence_new_user.to_f.truncate(2)).to eq(60.0)
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:medium]
expect(Reviewable.spam_score_to_silence_new_user.to_f.truncate(2)).to eq(39.99)
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:high]
expect(Reviewable.spam_score_to_silence_new_user.to_f.truncate(2)).to eq(19.99)
end
end
context ".score_to_auto_close_topic" do
it "returns 25 if we can't calculated any percentiles" do
SiteSetting.auto_close_topic_sensitivity = Reviewable.sensitivity[:low]
expect(Reviewable.score_to_auto_close_topic).to eq(25.0)
SiteSetting.auto_close_topic_sensitivity = Reviewable.sensitivity[:medium]
expect(Reviewable.score_to_auto_close_topic).to eq(25.0)
SiteSetting.auto_close_topic_sensitivity = Reviewable.sensitivity[:high]
expect(Reviewable.score_to_auto_close_topic).to eq(25.0)
end
it "returns a fraction of the high percentile" do
Reviewable.set_priorities(high: 100.0)
SiteSetting.auto_close_topic_sensitivity = Reviewable.sensitivity[:disabled]
expect(Reviewable.score_to_auto_close_topic.to_f.truncate(2)).to eq(Float::MAX)
SiteSetting.auto_close_topic_sensitivity = Reviewable.sensitivity[:low]
expect(Reviewable.score_to_auto_close_topic.to_f.truncate(2)).to eq(250.0)
SiteSetting.auto_close_topic_sensitivity = Reviewable.sensitivity[:medium]
expect(Reviewable.score_to_auto_close_topic.to_f.truncate(2)).to eq(166.66)
SiteSetting.auto_close_topic_sensitivity = Reviewable.sensitivity[:high]
expect(Reviewable.score_to_auto_close_topic.to_f.truncate(2)).to eq(83.33)
end
end
context "priorities" do
it "returns 0 for unknown priorities" do
expect(Reviewable.min_score_for_priority(:wat)).to eq(0.0)

View File

@@ -115,7 +115,8 @@ RSpec.describe Admin::FlagsController do
context '#disagree' do
it "unhides the post and unsilences the user if disagreed" do
SiteSetting.spam_score_to_silence_new_user = 1.0
Reviewable.set_priorities(high: 1.0)
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:low]
SiteSetting.num_users_to_silence_new_user = 1
new_user = Fabricate(:newuser)

View File

@@ -5,8 +5,9 @@ require 'rails_helper'
describe SpamRule::AutoSilence do
before do
SiteSetting.score_required_to_hide_post = 0 # never
SiteSetting.spam_score_to_silence_new_user = 4.0
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:disabled]
Reviewable.set_priorities(high: 4.0)
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:low]
SiteSetting.num_users_to_silence_new_user = 2
end
@@ -21,7 +22,8 @@ describe SpamRule::AutoSilence do
end
it 'delivers punishment when user should be silenced' do
SiteSetting.spam_score_to_silence_new_user = 2.0
Reviewable.set_priorities(high: 2.0)
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:low]
SiteSetting.num_users_to_silence_new_user = 1
PostActionCreator.spam(Discourse.system_user, post)
subject.perform
@@ -194,8 +196,8 @@ describe SpamRule::AutoSilence do
expect(subject.should_autosilence?).to eq(false)
end
it 'returns false if spam_score_to_silence_new_user is 0' do
SiteSetting.spam_score_to_silence_new_user = 0
it 'returns false if silence_new_user_sensitivity is disabled' do
SiteSetting.silence_new_user_sensitivity = Reviewable.sensitivity[:disabled]
PostActionCreator.spam(flagger, post)
PostActionCreator.spam(flagger2, post)
expect(subject.should_autosilence?).to eq(false)

View File

@@ -128,7 +128,8 @@ describe PostAlerter do
coding_horror = Fabricate(:coding_horror)
PostActionNotifier.enable
SiteSetting.score_required_to_hide_post = 4.0
Reviewable.set_priorities(high: 4.0)
SiteSetting.hide_post_sensitivity = Reviewable.sensitivity[:low]
PostActionCreator.spam(evil_trout, post)
PostActionCreator.spam(walterwhite, post)