64 lines
1.9 KiB
Ruby
64 lines
1.9 KiB
Ruby
require "test_helper"
|
|
|
|
class Cards::Comments::ReactionsControllerTest < ActionDispatch::IntegrationTest
|
|
setup do
|
|
sign_in_as :david
|
|
@comment = comments(:logo_agreement_jz)
|
|
@card = @comment.card
|
|
end
|
|
|
|
test "index" do
|
|
get card_comment_reactions_path(@card, @comment)
|
|
assert_response :success
|
|
end
|
|
|
|
test "create" do
|
|
assert_difference -> { @comment.reactions.count }, 1 do
|
|
post card_comment_reactions_path(@comment.card, @comment, format: :turbo_stream), params: { reaction: { content: "Great work!" } }
|
|
assert_turbo_stream action: :replace, target: dom_id(@comment, :reacting)
|
|
end
|
|
end
|
|
|
|
test "destroy" do
|
|
reaction = reactions(:david)
|
|
assert_difference -> { @comment.reactions.count }, -1 do
|
|
delete card_comment_reaction_path(@comment.card, @comment, reaction, format: :turbo_stream)
|
|
assert_turbo_stream action: :remove, target: dom_id(reaction)
|
|
end
|
|
end
|
|
|
|
test "non-owner cannot destroy reaction" do
|
|
reaction = reactions(:kevin)
|
|
|
|
assert_no_difference -> { @comment.reactions.count } do
|
|
delete card_comment_reaction_path(@comment.card, @comment, reaction, format: :turbo_stream)
|
|
assert_response :forbidden
|
|
end
|
|
end
|
|
|
|
test "index as JSON" do
|
|
get card_comment_reactions_path(@card, @comment), as: :json
|
|
|
|
assert_response :success
|
|
assert_equal @comment.reactions.count, @response.parsed_body.count
|
|
end
|
|
|
|
test "create as JSON" do
|
|
assert_difference -> { @comment.reactions.count }, 1 do
|
|
post card_comment_reactions_path(@card, @comment), params: { reaction: { content: "👍" } }, as: :json
|
|
end
|
|
|
|
assert_response :created
|
|
end
|
|
|
|
test "destroy as JSON" do
|
|
reaction = reactions(:david)
|
|
|
|
assert_difference -> { @comment.reactions.count }, -1 do
|
|
delete card_comment_reaction_path(@card, @comment, reaction), as: :json
|
|
end
|
|
|
|
assert_response :no_content
|
|
end
|
|
end
|