Fix #4374: Unvoting comments is broken.
This commit is contained in:
@@ -10,13 +10,13 @@ class CommentVotesController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def create
|
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])
|
@comment_vote = @comment.vote!(params[:score])
|
||||||
respond_with(@comment)
|
respond_with(@comment)
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@comment = authorize Comment.find(params[:comment_id])
|
@comment = authorize Comment.find(params[:comment_id]), policy_class: CommentVotePolicy
|
||||||
@comment.unvote!
|
@comment.unvote!
|
||||||
respond_with(@comment)
|
respond_with(@comment)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,2 +1,6 @@
|
|||||||
class CommentVotePolicy < ApplicationPolicy
|
class CommentVotePolicy < ApplicationPolicy
|
||||||
|
def destroy?
|
||||||
|
# XXX permissions are checked in Comment#unvote!
|
||||||
|
true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -13,6 +13,15 @@ class CommentVotesControllerTest < ActionDispatch::IntegrationTest
|
|||||||
CurrentUser.ip_addr = nil
|
CurrentUser.ip_addr = nil
|
||||||
end
|
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
|
context "#create.json" do
|
||||||
should "create a vote" do
|
should "create a vote" do
|
||||||
assert_difference("CommentVote.count", 1) do
|
assert_difference("CommentVote.count", 1) do
|
||||||
@@ -53,5 +62,25 @@ class CommentVotesControllerTest < ActionDispatch::IntegrationTest
|
|||||||
end
|
end
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user