# 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: "

#{Faker::TwinPeaks.quote}

", css: "body {color: #{Faker::Color.hex_color}}", text: Faker::TwinPeaks.quote } else Faker::TwinPeaks.quote end end # rubocop:enable Metrics/MethodLength end