Files
danbooru/test/functional/user_feedbacks_controller_test.rb
evazion b4ce2d83a6 models: remove belongs_to_creator macro.
The belongs_to_creator macro was used to initialize the creator_id field
to the CurrentUser. This made tests complicated because it meant you had
to create and set the current user every time you wanted to create an
object, when lead to the current user being set over and over again. It
also meant you had to constantly be aware of what the CurrentUser was in
many different contexts, which was often confusing. Setting creators
explicitly simplifies everything greatly.
2020-01-21 00:09:38 -06:00

75 lines
2.4 KiB
Ruby

require 'test_helper'
class UserFeedbacksControllerTest < ActionDispatch::IntegrationTest
context "The user feedbacks controller" do
setup do
@user = create(:user)
@critic = create(:gold_user)
@mod = create(:moderator_user)
@user_feedback = create(:user_feedback, user: @user, creator: @critic)
end
context "new action" do
should "render" do
get_auth new_user_feedback_path, @critic, params: { user_feedback: { user_id: @user.id } }
assert_response :success
end
end
context "edit action" do
should "render" do
get_auth edit_user_feedback_path(@user_feedback), @critic
assert_response :success
end
end
context "index action" do
should "render" do
get_auth user_feedbacks_path, @user
assert_response :success
end
context "with search parameters" do
should "render" do
get_auth user_feedbacks_path, @critic, params: {:search => {:user_id => @user.id}}
assert_response :success
end
end
end
context "create action" do
should "create a new feedback" do
assert_difference("UserFeedback.count", 1) do
post_auth user_feedbacks_path, @critic, params: {:user_feedback => {:category => "positive", :user_name => @user.name, :body => "xxx"}}
end
end
end
context "update action" do
should "update the feedback" do
put_auth user_feedback_path(@user_feedback), @critic, params: { user_feedback: { category: "positive" }}
assert_redirected_to(@user_feedback)
assert("positive", @user_feedback.reload.category)
end
context "by a moderator" do
should "allow deleting feedbacks given to other users" do
put_auth user_feedback_path(@user_feedback), @mod, params: { user_feedback: { is_deleted: "true" }}
assert_redirected_to @user_feedback
assert(@user_feedback.reload.is_deleted?)
end
should "not allow deleting feedbacks given to themselves" do
@user_feedback = as(@critic) { create(:user_feedback, user: @mod) }
put_auth user_feedback_path(@user_feedback), @mod, params: { id: @user_feedback.id, user_feedback: { is_deleted: "true" }}
assert_response 403
refute(@user_feedback.reload.is_deleted?)
end
end
end
end
end