Fix #4374: Unvoting comments is broken.

This commit is contained in:
evazion
2020-03-28 21:15:51 -05:00
parent c5260f4927
commit 919a2868be
3 changed files with 35 additions and 2 deletions

View File

@@ -10,13 +10,13 @@ class CommentVotesController < ApplicationController
end
def create
@comment = authorize Comment.find(params[:comment_id])
@comment = authorize Comment.find(params[:comment_id]), policy_class: CommentVotePolicy
@comment_vote = @comment.vote!(params[:score])
respond_with(@comment)
end
def destroy
@comment = authorize Comment.find(params[:comment_id])
@comment = authorize Comment.find(params[:comment_id]), policy_class: CommentVotePolicy
@comment.unvote!
respond_with(@comment)
end

View File

@@ -1,2 +1,6 @@
class CommentVotePolicy < ApplicationPolicy
def destroy?
# XXX permissions are checked in Comment#unvote!
true
end
end

View File

@@ -13,6 +13,15 @@ class CommentVotesControllerTest < ActionDispatch::IntegrationTest
CurrentUser.ip_addr = nil
end
context "#index" do
should "work" do
create(:comment_vote, user: @user)
get_auth comment_votes_path, @user
assert_response :success
end
end
context "#create.json" do
should "create a vote" do
assert_difference("CommentVote.count", 1) do
@@ -53,5 +62,25 @@ class CommentVotesControllerTest < ActionDispatch::IntegrationTest
end
end
end
context "#destroy" do
should "allow users to remove their own comment votes" do
@vote = create(:comment_vote, user: @user)
assert_difference("CommentVote.count", -1) do
delete_auth comment_comment_votes_path(@vote.comment), @user
assert_redirected_to @vote.comment
end
end
should "not allow users to remove comment votes by other users" do
@vote = create(:comment_vote)
assert_difference("CommentVote.count", 0) do
delete_auth comment_comment_votes_path(@vote.comment), @user
assert_response 422
end
end
end
end
end