70 lines
1.9 KiB
Ruby
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
|