# frozen_string_literal: true
require 'test_helper'

class ReviewControllerTest < ActionDispatch::IntegrationTest
  test "should get login" do
    get review_login_url
    assert_response :success
  end

  test "should require auth or redirect" do
    get review_url
    assert_redirected_to review_login_path

    get review_test_url(candidates(:richard).test_hash)
    assert_redirected_to review_login_path
  end

  test "should auth to index" do
    auth_reviewer
    assert_redirected_to review_path
    assert session[:user].present?
  end

  test "should fail auth with flash" do
    post review_auth_url, params: { auth:
        { email: 'fed.review@mailinator.com', password: 'bad-password' } }

    assert_redirected_to review_login_path
    assert flash[:error]
  end

  test "should get review list" do
    auth_reviewer
    get review_url
    assert_response :success
    assert assigns(:candidates), '@candidates not present'
  end

  test "should get index" do
    auth_reviewer

    get review_url
    assert_response :success
  end

  test "should get view" do
    auth_reviewer

    get review_test_url(candidates(:richard).test_hash)
    assert_response :success
    assert assigns(:candidate), "@candidate not present"
    assert assigns(:quiz), "@quiz not present"
    assert assigns(:status), "@status not present"
  end

  test 'should logout and reset session' do
    auth_reviewer
    get review_logout_path

    assert :success
    assert session[:user].nil?
  end
end
