generate completed quizzes

This commit is contained in:
Mark Moser 2017-02-24 13:30:22 -06:00
parent b65834d962
commit 7bb795e379
5 changed files with 90 additions and 7 deletions

View File

@ -53,6 +53,7 @@ group :development, :test do
gem 'byebug', platform: :mri gem 'byebug', platform: :mri
gem 'pry-byebug' gem 'pry-byebug'
gem 'pry-rails' gem 'pry-rails'
gem 'faker'
gem 'brakeman' gem 'brakeman'
gem 'rubocop', '~> 0.42.0' gem 'rubocop', '~> 0.42.0'

View File

@ -72,6 +72,8 @@ GEM
erubis (2.7.0) erubis (2.7.0)
eventmachine (1.2.1) eventmachine (1.2.1)
execjs (2.7.0) execjs (2.7.0)
faker (1.7.3)
i18n (~> 0.5)
ffi (1.9.14) ffi (1.9.14)
figaro (1.1.1) figaro (1.1.1)
thor (~> 0.14) thor (~> 0.14)
@ -300,6 +302,7 @@ DEPENDENCIES
bourbon bourbon
brakeman brakeman
byebug byebug
faker
figaro (~> 1.1.1) figaro (~> 1.1.1)
guard guard
guard-brakeman guard-brakeman
@ -338,4 +341,4 @@ DEPENDENCIES
web-console web-console
BUNDLED WITH BUNDLED WITH
1.13.2 1.13.3

69
app/services/fake_quiz.rb Normal file
View File

@ -0,0 +1,69 @@
# 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

10
lib/tasks/faker.rake Normal file
View File

@ -0,0 +1,10 @@
# frozen_string_literal: true
namespace :faker do
desc "Generates 10 fake candidates with results."
task results: :environment do
puts "Not for production use" and return if Rails.env == "production"
faker = FakeQuiz.new
faker.create_completed_quizzes 10
end
end

View File

@ -63,7 +63,7 @@ richard: # Richard has completed AND submitted the test
recruiter: recruiter recruiter: recruiter
quiz: fed quiz: fed
completed: true completed: true
completed_at: <%= DateTime.current %> completed_at: <%= DateTime.current - 20.days %>
reminded: false reminded: false
test_hash: 6NjnourLE6Y test_hash: 6NjnourLE6Y
review_status: 1 review_status: 1
@ -87,7 +87,7 @@ stacy: # Stacy has completed AND submitted the test
recruiter: recruiter recruiter: recruiter
quiz: fed quiz: fed
completed: true completed: true
completed_at: <%= DateTime.current %> completed_at: <%= DateTime.current - 13.hours %>
reminded: false reminded: false
test_hash: s6oFExZliYYFx test_hash: s6oFExZliYYFx
review_status: 2 review_status: 2
@ -100,7 +100,7 @@ henry: # Henry has completed AND submitted the test
recruiter: recruiter recruiter: recruiter
quiz: fed quiz: fed
completed: true completed: true
completed_at: <%= DateTime.current %> completed_at: <%= DateTime.current - 3.days %>
reminded: false reminded: false
test_hash: egPomAuVDeCEp test_hash: egPomAuVDeCEp
@ -112,7 +112,7 @@ wade: # Wade has completed AND submitted the test
recruiter: recruiter recruiter: recruiter
quiz: fed quiz: fed
completed: true completed: true
completed_at: <%= DateTime.current %> completed_at: <%= DateTime.current - 8.days %>
reminded: false reminded: false
test_hash: BkSkpapJnkz2N test_hash: BkSkpapJnkz2N
@ -124,7 +124,7 @@ jorge: # Jorge has completed AND submitted the test
recruiter: recruiter recruiter: recruiter
quiz: fed quiz: fed
completed: true completed: true
completed_at: <%= DateTime.current %> completed_at: <%= DateTime.current - 12.days + 3.hours %>
reminded: false reminded: false
test_hash: iC5FdWJxcyySBmpOpU test_hash: iC5FdWJxcyySBmpOpU
@ -136,7 +136,7 @@ elsie: # Elsie has completed AND submitted the test
recruiter: recruiter recruiter: recruiter
quiz: fed quiz: fed
completed: true completed: true
completed_at: <%= DateTime.current %> completed_at: <%= DateTime.current - 45.days + 6.hours %>
reminded: false reminded: false
test_hash: rLSoizA3ATMNSCx test_hash: rLSoizA3ATMNSCx