skill-assessment-app/lib/utils/fake_quiz.rb
2017-03-02 10:36:10 -06:00

70 lines
1.9 KiB
Ruby

# frozen_string_literal: true
class FakeQuiz
def create_completed_quizzes num = 10
num.times do
candidate = create_candidate Faker::Name.name
answer_questions candidate
candidate.update_attributes(completed: true, completed_at: Time.zone.now - rand(0..112).days)
candidate.build_reviews
end
end
def create_candidate name
Candidate.create(name: name,
email: "#{Faker::Internet.user_name(name)}@mailinator.com",
experience: rando_experience,
project: Faker::Company.name,
recruiter_id: recruiter_id,
quiz_id: fed_quiz_id)
end
def answer_questions candidate
candidate.quiz.questions.each do |question|
candidate.answers.create(question_id: question.id,
answer: generate_answer(question),
submitted: true)
end
end
private
def fed_quiz_id
Quiz.find_by(dept: 'fed').id
end
def recruiter_id
User.find_by(name: 'Sam Recruiter').id
end
def rando_experience
%w(0-3 4-6 7-9 10-14 15+)[rand(0..4)]
end
def generate_answer question # rubocop:disable Metrics/MethodLength
case question.input_type
when "checkbox"
question.input_options
when "checkbox_other"
{
other: Faker::TwinPeaks.quote,
options: question.input_options
}
when "radio"
question.input_options.sample
when "radio_other"
{
other: Faker::TwinPeaks.quote,
options: question.input_options.sample
}
when "live_code"
{
html: "<p>#{Faker::TwinPeaks.quote}</p>",
css: "body {color: #{Faker::Color.hex_color}}",
text: Faker::TwinPeaks.quote
}
else
Faker::TwinPeaks.quote
end
end # rubocop:enable Metrics/MethodLength
end