# frozen_string_literal: true
require 'test_helper'

class ReviewerMailerTest < ActionMailer::TestCase
  test "candidate_submission" do
    candidate = candidates :dawn
    mail = ReviewerMailer.candidate_submission candidate
    assert_match "Results", mail.subject
    assert_match candidate.test_hash, mail.subject
    assert_equal candidate.quiz.reviewers.map(&:email), mail.to
    assert_equal [ENV["default_mail_from"]], mail.from
    assert_match candidate.test_hash, mail.body.encoded
  end

  test "reminder" do
    reminders = ReviewerReminder.new
    reminder = reminders.reminders.first
    mail = ReviewerMailer.reminder reminder
    assert_match "Review Reminder", mail.subject
    assert_equal [reminder.email], mail.to
    assert_equal [ENV["default_mail_from"]], mail.from
    assert_match reminder.test_hash, mail.body.encoded
  end

  test "notify_manager" do
    candidate = candidates(:richard)
    mail = ReviewerMailer.notify_manager candidate.id
    assert_match "Voting Complete", mail.subject
    assert_equal [candidate.manager.email], mail.to
    assert_equal [ENV["default_mail_from"]], mail.from
    assert_match candidate.test_hash, mail.body.encoded
  end

  test "comment notification" do
    comment = quiz_comments(:com5)
    mail = ReviewerMailer.new_comment comment
    assert_match "Comment", mail.subject
    assert_match comment.test_hash, mail.subject
    assert_equal comment.candidate.reviewers.map(&:email), mail.to
    assert_equal [ENV["default_mail_from"]], mail.from
    assert_match comment.test_hash, mail.body.encoded
  end
end
