Remove sending dmail notifications to uploaders when an upload is disapproved. These messages are usually confusing and frustrating to uploaders. They don't know who is sending them and they usually feel insulted when they get negative messages from anonymous users.
83 lines
2.9 KiB
Ruby
83 lines
2.9 KiB
Ruby
require 'test_helper'
|
|
|
|
class PostDisapprovalTest < ActiveSupport::TestCase
|
|
context "In all cases" do
|
|
setup do
|
|
@alice = FactoryBot.create(:moderator_user, name: "alice")
|
|
CurrentUser.user = @alice
|
|
CurrentUser.ip_addr = "127.0.0.1"
|
|
end
|
|
|
|
teardown do
|
|
CurrentUser.user = nil
|
|
CurrentUser.ip_addr = nil
|
|
end
|
|
|
|
context "A post disapproval" do
|
|
setup do
|
|
@post_1 = FactoryBot.create(:post, :is_pending => true)
|
|
@post_2 = FactoryBot.create(:post, :is_pending => true)
|
|
end
|
|
|
|
should "not allow blank messages" do
|
|
@post_disapproval = create(:post_disapproval, post: @post_1, message: "")
|
|
assert_nil(@post_disapproval.message)
|
|
end
|
|
|
|
context "made by alice" do
|
|
setup do
|
|
@disapproval = create(:post_disapproval, user: @alice, post: @post_1)
|
|
end
|
|
|
|
context "when the current user is alice" do
|
|
setup do
|
|
CurrentUser.user = @alice
|
|
end
|
|
|
|
should "remove the associated post from alice's moderation queue" do
|
|
assert(!Post.available_for_moderation(CurrentUser.user, hidden: false).map(&:id).include?(@post_1.id))
|
|
assert(Post.available_for_moderation(CurrentUser.user, hidden: false).map(&:id).include?(@post_2.id))
|
|
end
|
|
end
|
|
|
|
context "when the current user is brittony" do
|
|
setup do
|
|
@brittony = FactoryBot.create(:moderator_user)
|
|
CurrentUser.user = @brittony
|
|
end
|
|
|
|
should "not remove the associated post from brittony's moderation queue" do
|
|
assert(Post.available_for_moderation(CurrentUser.user, hidden: false).map(&:id).include?(@post_1.id))
|
|
assert(Post.available_for_moderation(CurrentUser.user, hidden: false).map(&:id).include?(@post_2.id))
|
|
end
|
|
end
|
|
end
|
|
|
|
context "for a post that has been approved" do
|
|
setup do
|
|
@post = FactoryBot.create(:post, is_pending: true)
|
|
@user = FactoryBot.create(:user)
|
|
@disapproval = create(:post_disapproval, user: @user, post: @post, created_at: 2.months.ago)
|
|
end
|
|
|
|
should "be pruned" do
|
|
assert_difference("PostDisapproval.count", -1) do
|
|
PostDisapproval.prune!
|
|
end
|
|
end
|
|
end
|
|
|
|
context "#search" do
|
|
should "work" do
|
|
disapproval1 = FactoryBot.create(:post_disapproval, user: @alice, post: @post_1, reason: "breaks_rules")
|
|
disapproval2 = FactoryBot.create(:post_disapproval, user: @alice, post: @post_2, reason: "poor_quality", message: "bad anatomy")
|
|
|
|
assert_equal([disapproval1.id], PostDisapproval.search(reason: "breaks_rules").pluck(:id))
|
|
assert_equal([disapproval2.id], PostDisapproval.search(message: "bad anatomy").pluck(:id))
|
|
assert_equal([disapproval2.id, disapproval1.id], PostDisapproval.search(creator_name: "alice").pluck(:id))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|