require 'test_helper' class CandidateControllerTest < ActionDispatch::IntegrationTest def setup_auth candidate post validate_candidate_url, params: { test_id: candidate.test_hash } end test "should get login" do get login_path assert_response :success refute flash[:error].present?, "Should not be displaying an error message" end test "should require auth and redirect" do get saved_path assert_redirected_to login_path get thankyou_path assert_redirected_to login_path get summary_path assert_redirected_to login_path get question_path assert_redirected_to login_path get question_path(questions(:fed1).id) assert_redirected_to login_path end test "should auth to welcome" do setup_auth candidates(:martha) assert_redirected_to welcome_path assert session[:test_id].present? refute flash[:error].present?, "Should not be displaying an error message" end test "should auth directly to welcome" do get login_path(candidates(:martha).test_hash) assert_redirected_to welcome_path assert session[:test_id].present? refute flash[:error].present?, "Should not be displaying an error message" end test "should display welcome view" do setup_auth candidates(:martha) get welcome_path assert_select '.prft-heading', "Welcome!" end test "should display welcome back view" do setup_auth candidates(:roy) get welcome_path assert_select '.prft-heading', "Welcome Back" end test "should redirect to thankyou when completed" do setup_auth candidates(:richard) assert_redirected_to thankyou_path end test "should get summary if complete but not submitted" do setup_auth candidates(:dawn) get summary_url assert_response :success end test "should get flash message on bad radio response" do setup_auth candidates(:martha) qid = questions(:fed1).id post post_answer_path, params: { answer: { question_id: qid, radio: nil } } assert_response :success assert session[:test_id].present? assert_equal qid, flash[:answer_error] end test "should NOT send mailers on submission" do setup_auth candidates(:dawn) assert_difference("ActionMailer::Base.deliveries.size", 0) do post post_summary_path end assert_redirected_to summary_path assert_match 'must complete', flash[:error] end test "should send mailers on submission" do setup_auth candidates(:peggy) assert_difference("ActionMailer::Base.deliveries.size", 3) do post post_summary_path end assert_redirected_to thankyou_path end end