eBooru/test/functional/post_votes_controller_test.rb
Earlopain fc7d84affd
[RuboCop] Enable Style/FrozenStringLiteralComment
This reduces allocations on the posts page by about 5%, from basic testing
2024-02-25 18:15:55 +01:00

51 lines
1.5 KiB
Ruby

# frozen_string_literal: true
require "test_helper"
class PostVotesControllerTest < ActionDispatch::IntegrationTest
context "The post vote controller" do
setup do
@user = create(:privileged_user)
as(@user) do
@post = create(:post)
end
end
context "create action" do
should "not allow anonymous users to vote" do
post post_votes_path(post_id: @post.id), params: { score: 1, format: "json" }
assert_response 403
assert_equal(0, @post.reload.score)
end
should "not allow banned users to vote" do
@banned = create(:banned_user)
post_auth post_votes_path(post_id: @post.id), @banned, params: { score: 1, format: "json" }
assert_response 401
assert_equal(0, @post.reload.score)
end
should "increment a post's score if the score is positive" do
post_auth post_votes_path(post_id: @post.id), @user, params: { score: 1, format: "json" }
assert_response :success
@post.reload
assert_equal(1, @post.score)
end
context "for a post that has already been voted on" do
setup do
as(@user) do
post_auth post_votes_path(post_id: @post.id), @user, params: { score: 1, format: "json" }
end
end
should "fail silently on an error" do
assert_nothing_raised do
post_auth post_votes_path(post_id: @post.id), @user, params: { score: "up", format: "json" }
end
end
end
end
end
end