# frozen_string_literal: true require 'test_helper' module Admin class CommentControllerTest < ActionDispatch::IntegrationTest include ActiveJob::TestHelper test "should post update" do auth_manager comment = quiz_comments(:com5) post admin_update_comment_url(test_hash: comment.test_hash, id: comment.id), params: { quiz_comment: { message: 'updated comment' } } assert_redirected_to admin_result_url(test_hash: comment.test_hash) assert flash[:success] refute_equal comment.message, QuizComment.find_by(id: comment.id).message end test "should require message to update" do auth_manager comment = quiz_comments(:com5) post admin_update_comment_url(test_hash: comment.test_hash, id: comment.id), params: { quiz_comment: { message: '' } } assert_redirected_to admin_result_url(test_hash: comment.test_hash) assert flash[:error] assert_equal comment.message, QuizComment.find_by(id: comment.id).message end test "should post create" do auth_reviewer candidate = candidates(:stacy) assert_difference("QuizComment.count") do post admin_create_comment_url(test_hash: candidate.test_hash), params: { quiz_comment: { message: 'this is a test comment' } } end assert_redirected_to admin_result_url(test_hash: candidate.test_hash) assert flash[:success] end test "admin can post comment" do auth_admin candidate = candidates(:stacy) assert_difference("QuizComment.count") do post admin_create_comment_url(test_hash: candidate.test_hash), params: { quiz_comment: { message: 'this is an admin comment' } } end assert_redirected_to admin_result_url(test_hash: candidate.test_hash) assert flash[:success] end test "should queue emails on create" do auth_reviewer candidate = candidates(:stacy) assert_enqueued_jobs 1 do assert_difference("QuizComment.count", 1) do post admin_create_comment_url(test_hash: candidate.test_hash), params: { quiz_comment: { message: 'this is a test comment' } } end end end test "should require comment to create" do auth_reviewer candidate = candidates(:stacy) assert_difference("QuizComment.count", 0) do post admin_create_comment_url(test_hash: candidate.test_hash), params: { quiz_comment: { message: '' } } end assert_redirected_to admin_result_url(test_hash: candidate.test_hash) assert flash[:error] end test "should not edit others comments" do auth_reviewer comment = quiz_comments(:com5) post admin_update_comment_url(test_hash: comment.test_hash, id: comment.id), params: { quiz_comment: { message: 'updated comment' } } assert_redirected_to admin_login_url assert_equal comment.message, QuizComment.find_by(id: comment.id).message end test "can not comment on Gustov" do auth_reviewer candidate = candidates(:gustov) assert_difference("QuizComment.count", 0) do post admin_create_comment_url(test_hash: candidate.test_hash), params: { quiz_comment: { message: 'this is a test comment' } } end assert_redirected_to admin_login_url end end end