Files
danbooru/test/unit/approver_pruner_test.rb
evazion 001ce99dd3 feedbacks: don't send redundant dmails when user is banned or loses approver status.
When a user is banned, send them a "You have been banned" dmail instead of a "Your user record has
been updated" dmail.

When a user loses approver status due to inactivity, don't seen them a "Your user record has been
updated" dmail for the "Lost approver privileges" neutral feedback they receive.
2022-11-20 17:10:20 -06:00

42 lines
1.3 KiB
Ruby

require 'test_helper'
class ApproverPrunerTest < ActiveSupport::TestCase
context "ApproverPruner" do
setup do
@approver = create(:approver)
end
should "demote inactive approvers" do
assert_equal([@approver.id], ApproverPruner.inactive_approvers.map(&:id))
assert_nothing_raised { ApproverPruner.prune! }
assert_equal(User::Levels::CONTRIBUTOR, @approver.reload.level)
assert_equal(1, @approver.dmails.received.count)
assert_equal("Approver inactivity", @approver.dmails.received.last.title)
end
should "not demote active approvers" do
posts = create_list(:post, ApproverPruner::MINIMUM_APPROVALS + 1, is_pending: true)
posts.each { |post| create(:post_approval, post: post, user: @approver) }
assert_equal([], ApproverPruner.inactive_approvers.map(&:id))
end
should "not demote recently promoted approvers" do
as(create(:admin_user)) do
@user = create(:user)
@user.promote_to!(User::Levels::APPROVER)
end
assert_not_includes(ApproverPruner.inactive_approvers.map(&:id), @user.id)
end
should "dmail inactive approvers" do
travel_to(Date.parse("2020-01-20")) do
ApproverPruner.dmail_inactive_approvers!
end
assert_equal("You will lose approval privileges soon", @approver.dmails.received.last.title)
end
end
end