posts: add disapproved:<reason> edit metatag.
* Allow tagging a post with a `disapproved:<disinterest|breaks_rules|poor_quality>` to disapprove it. * Disallow disapproving active posts. Fixes #4384.
This commit is contained in:
@@ -29,6 +29,14 @@ class PostDisapprovalsControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_response 403
|
||||
end
|
||||
end
|
||||
|
||||
should "not allow disapproving active posts" do
|
||||
assert_difference("PostDisapproval.count", 0) do
|
||||
@post.update!(is_pending: false)
|
||||
post_auth post_disapprovals_path, @approver, params: { post_disapproval: { post_id: @post.id, reason: "breaks_rules" }, format: "js" }
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "index action" do
|
||||
|
||||
@@ -1046,6 +1046,38 @@ class PostTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
context "for disapproved:<reason>" do
|
||||
should "disapprove the post if the user has permission" do
|
||||
@user = create(:approver)
|
||||
|
||||
as(@user) do
|
||||
@post.update!(is_pending: true)
|
||||
@post.update(tag_string: "aaa disapproved:disinterest")
|
||||
end
|
||||
|
||||
assert_equal(@post.id, PostDisapproval.last.post_id)
|
||||
assert_equal(@user.id, PostDisapproval.last.user_id)
|
||||
assert_equal("disinterest", PostDisapproval.last.reason)
|
||||
end
|
||||
|
||||
should "not disapprove the post if the user is doesn't have permission" do
|
||||
assert_raises(User::PrivilegeError) do
|
||||
@post.update!(is_pending: true)
|
||||
@post.update(tag_string: "aaa disapproved:disinterest")
|
||||
end
|
||||
|
||||
assert_equal(0, @post.disapprovals.count)
|
||||
end
|
||||
|
||||
should "not allow disapproving active posts" do
|
||||
assert_raises(User::PrivilegeError) do
|
||||
@post.update(tag_string: "aaa disapproved:disinterest")
|
||||
end
|
||||
|
||||
assert_equal(0, @post.disapprovals.count)
|
||||
end
|
||||
end
|
||||
|
||||
context "for a source" do
|
||||
should "set the source with source:foo_bar_baz" do
|
||||
@post.update(:tag_string => "source:foo_bar_baz")
|
||||
|
||||
Reference in New Issue
Block a user