# 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(Reviewable.min_score_for_priority(:low)).to eq(0.0) expect(Reviewable.min_score_for_priority(:medium)).to eq(0.0) expect(Reviewable.min_score_for_priority(:high)).to eq(0.0) expect(Reviewable.score_required_to_hide_post).to eq(8.33) end fab!(:u0) { Fabricate(:user) } fab!(:u1) { Fabricate(:user) } def create_reviewables(count) (1..count).each do |i| r = Fabricate(:reviewable_flagged_post) r.add_score(u0, PostActionType.types[:off_topic]) r.add_score(u1, PostActionType.types[:off_topic]) r.update!(score: i) end end it "needs a minimum amount of reviewables before it calculates anything" do create_reviewables(5) Jobs::ReviewablePriorities.new.execute({}) expect(Reviewable.min_score_for_priority(:low)).to eq(0.0) expect(Reviewable.min_score_for_priority(:medium)).to eq(0.0) expect(Reviewable.min_score_for_priority(:high)).to eq(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(Reviewable.min_score_for_priority(:low)).to eq(0.0) expect(Reviewable.min_score_for_priority(:medium)).to eq(8.0) expect(Reviewable.min_score_for_priority('medium')).to eq(8.0) expect(Reviewable.min_score_for_priority(:high)).to eq(13.0) expect(Reviewable.score_required_to_hide_post).to eq(8.66) end end