105 lines
3.2 KiB
Ruby
105 lines
3.2 KiB
Ruby
# frozen_string_literal: true
|
|
require 'test_helper'
|
|
|
|
module Admin
|
|
class QuestionControllerTest < ActionDispatch::IntegrationTest
|
|
def setup
|
|
post admin_auth_url, params: { auth:
|
|
{ email: 'alan.admin@mailinator.com', password: 'password' } }
|
|
end
|
|
|
|
test "should get index" do
|
|
get admin_questions_url
|
|
assert_response :success
|
|
assert assigns :questions
|
|
end
|
|
|
|
test "should get new" do
|
|
get admin_new_question_url
|
|
assert_response :success
|
|
assert assigns :question
|
|
end
|
|
|
|
test "should fail create" do
|
|
assert_difference("Question.count", 0) do
|
|
post admin_create_question_url, params: { question: { question: 'foo bar baz' } }
|
|
end
|
|
assert :success
|
|
assert_match(/failed/i, session[:flash].values.join)
|
|
end
|
|
|
|
test "should fail to create without quiz id" do
|
|
assert_difference("Question.count", 0) do
|
|
post admin_create_question_url, params: { question:
|
|
{ question: 'foo bar baz', category: 'ops', input_type: 'text' } }
|
|
end
|
|
assert :success
|
|
assert_match(/failed/i, session[:flash].values.join)
|
|
end
|
|
|
|
test "should post create" do
|
|
assert_difference("Question.count", 1) do
|
|
post admin_create_question_url, params: { question:
|
|
{ quiz_id: quizzes(:fed).to_i, question: 'foo bar baz', category: 'ops', input_type: 'text' } }
|
|
end
|
|
assert_redirected_to admin_questions_url
|
|
end
|
|
|
|
test "should get view" do
|
|
get admin_question_url questions(:fed5).to_i
|
|
assert_response :success
|
|
assert assigns :question
|
|
end
|
|
|
|
test "should get edit" do
|
|
get admin_edit_question_url questions(:fed5).to_i
|
|
assert_response :success
|
|
assert assigns :question
|
|
end
|
|
|
|
test "should post update quiz" do
|
|
question = questions(:fed9)
|
|
post admin_update_question_url(question.to_i), params: { question:
|
|
{ quiz_id: quizzes(:fed).to_i, question: 'foo bar baz', category: 'ops', input_type: 'text' } }
|
|
assert_redirected_to admin_question_path(question.to_i)
|
|
|
|
get admin_question_path question.to_i
|
|
assert_select 'p', 'foo bar baz'
|
|
end
|
|
|
|
test "should post attachment" do
|
|
question = questions(:fed1)
|
|
post admin_update_question_url(question.to_i), params: { question:
|
|
{ quiz_id: quizzes(:fed).to_i, attachment: 'https://dev.perficientdigital.com/logo.png' } }
|
|
assert_redirected_to admin_question_path(question.to_i)
|
|
|
|
get admin_question_path question.to_i
|
|
assert_select 'img' do
|
|
assert_select "[src=?]", "https://dev.perficientdigital.com/logo.png"
|
|
end
|
|
end
|
|
|
|
test "should fail to update question" do
|
|
question = questions(:fed9)
|
|
post admin_update_question_url(question.to_i), params: { question: { question: nil } }
|
|
assert :success
|
|
assert_match(/failed/i, session[:flash].values.join)
|
|
end
|
|
|
|
test "should gracefully fail input_type" do
|
|
get admin_question_option_form_url(input_type: 'fooBarBaz')
|
|
|
|
assert :success
|
|
assigns :locals
|
|
end
|
|
|
|
test "should return partial for new radio" do
|
|
get admin_question_option_form_url(input_type: 'radio')
|
|
|
|
assert :success
|
|
assigns :locals
|
|
assert_select "input[id^=question_multi_choice_]"
|
|
end
|
|
end
|
|
end
|