discourse/spec/jobs/reviewable_priorities_spec.rb

71 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
describe Jobs::ReviewablePriorities do
it "needs returns 0s with no existing reviewables" do
Jobs::ReviewablePriorities.new.execute({})
expect_min_score(:low, 0.0)
expect_min_score(:medium, 0.0)
expect_min_score(:high, 0.0)
expect(Reviewable.score_required_to_hide_post).to eq(8.33)
end
fab!(:user_0) { Fabricate(:user) }
fab!(:user_1) { Fabricate(:user) }
def create_reviewables(count)
(1..count).each { |i| create_with_score(i) }
end
def create_with_score(score)
Fabricate(:reviewable_flagged_post).tap do |reviewable|
reviewable.add_score(user_0, PostActionType.types[:off_topic])
reviewable.add_score(user_1, PostActionType.types[:off_topic])
reviewable.update!(score: score)
end
end
it "needs a minimum amount of reviewables before it calculates anything" do
create_reviewables(5)
Jobs::ReviewablePriorities.new.execute({})
expect_min_score(:low, 0.0)
expect_min_score(:medium, 0.0)
expect_min_score(:high, 0.0)
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)
Jobs::ReviewablePriorities.new.execute({})
expect_min_score(:low, SiteSetting.reviewable_low_priority_threshold)
expect_min_score(:medium, 8.0)
expect_min_score('medium', 8.0)
expect_min_score(:high, 13.0)
expect(Reviewable.score_required_to_hide_post).to eq(8.66)
end
it 'ignore negative scores when calculating priorities' do
create_reviewables(Jobs::ReviewablePriorities.min_reviewables)
negative_score = -9
10.times { create_with_score(negative_score) }
Jobs::ReviewablePriorities.new.execute({})
expect_min_score(:low, SiteSetting.reviewable_low_priority_threshold)
expect_min_score(:medium, 8.0)
expect_min_score(:high, 13.0)
expect(Reviewable.score_required_to_hide_post).to eq(8.66)
end
def expect_min_score(priority, score)
expect(Reviewable.min_score_for_priority(priority)).to eq(score)
end
end