Files
danbooru/test/functional/post_disapprovals_controller_test.rb
evazion d435795b73 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.
2020-04-03 23:44:02 -05:00

57 lines
2.1 KiB
Ruby

require 'test_helper'
class PostDisapprovalsControllerTest < ActionDispatch::IntegrationTest
context "The post disapprovals controller" do
setup do
@approver = create(:approver)
@post = create(:post, is_pending: true)
@post_disapproval = create(:post_disapproval, post: @post)
end
context "create action" do
should "render" do
assert_difference("PostDisapproval.count", 1) do
post_auth post_disapprovals_path, @approver, params: { post_disapproval: { post_id: @post.id, reason: "breaks_rules" }, format: "js" }
assert_response :success
end
end
should "render for json" do
assert_difference("PostDisapproval.count", 1) do
post_auth post_disapprovals_path, @approver, params: { post_disapproval: { post_id: @post.id, reason: "breaks_rules" }, format: "json" }
assert_response :success
end
end
should "not allow non-approvers to create disapprovals" do
assert_difference("PostDisapproval.count", 0) do
post_auth post_disapprovals_path, create(:user), params: { post_disapproval: { post_id: @post.id, reason: "breaks_rules" }, format: "json" }
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
should "allow mods to see disapprover names" do
get_auth post_disapprovals_path, create(:mod_user)
assert_response :success
assert_select "tr#post-disapproval-#{@post_disapproval.id} .created-column a.user-member", true
end
should "not allow non-mods to see disapprover names" do
get post_disapprovals_path
assert_response :success
assert_select "tr#post-disapproval-#{@post_disapproval.id} .created-column a.user-member", false
end
end
end
end