Convert response rate loader spec from using the seeder to using the factory

pull/1/head
rebuilt 3 years ago
parent 06f9d2f0e9
commit d0219217de

@ -4,11 +4,7 @@ class ResponseRateLoader
def self.reset(schools: School.all, academic_years: AcademicYear.all, subcategories: Subcategory.all) def self.reset(schools: School.all, academic_years: AcademicYear.all, subcategories: Subcategory.all)
subcategories.each do |subcategory| subcategories.each do |subcategory|
schools.each do |school| schools.each do |school|
next if test_env? && (school != milford)
academic_years.each do |academic_year| academic_years.each do |academic_year|
next if test_env? && (academic_year != test_year)
process_response_rate(subcategory:, school:, academic_year:) process_response_rate(subcategory:, school:, academic_year:)
end end
end end
@ -17,18 +13,6 @@ class ResponseRateLoader
private private
def self.milford
School.find_by_slug 'milford-high-school'
end
def self.test_year
AcademicYear.find_by_range '2020-21'
end
def self.rails_env
@rails_env ||= ENV['RAILS_ENV']
end
def self.process_response_rate(subcategory:, school:, academic_year:) def self.process_response_rate(subcategory:, school:, academic_year:)
student = StudentResponseRateCalculator.new(subcategory:, school:, academic_year:) student = StudentResponseRateCalculator.new(subcategory:, school:, academic_year:)
teacher = TeacherResponseRateCalculator.new(subcategory:, school:, academic_year:) teacher = TeacherResponseRateCalculator.new(subcategory:, school:, academic_year:)
@ -41,13 +25,5 @@ class ResponseRateLoader
meets_teacher_threshold: teacher.meets_teacher_threshold?) meets_teacher_threshold: teacher.meets_teacher_threshold?)
end end
def self.test_env?
rails_env == 'test'
end
private_class_method :milford
private_class_method :test_year
private_class_method :rails_env
private_class_method :process_response_rate private_class_method :process_response_rate
private_class_method :test_env?
end end

@ -1,42 +1,41 @@
require 'rails_helper' require 'rails_helper'
describe ResponseRateLoader do describe ResponseRateLoader do
let(:school) { School.find_by_slug 'milford-high-school' } let(:school) { create(:school, name: 'milford-high-school') }
let(:academic_year) { AcademicYear.find_by_range '2020-21' } let(:academic_year) { create(:academic_year, range: '2020-21') }
let(:respondent) do let(:respondent) do
respondent = Respondent.find_or_initialize_by(school:, academic_year:) respondent = create(:respondent, school:, academic_year:)
respondent.total_students = 10 respondent.total_students = 10
respondent.total_teachers = 10 respondent.total_teachers = 10
respondent.save respondent.save
end end
let(:short_form_survey) do let(:short_form_survey) do
survey = Survey.find_by(school:, academic_year:) survey = create(:survey, school:, academic_year:)
survey.form = :short survey.form = :short
survey.save survey.save
survey survey
end end
let(:subcategory) { Subcategory.find_by_subcategory_id '5D' } let(:subcategory) { create(:subcategory, subcategory_id: '5D', name: 'Health') }
let(:measure) { create(:measure, measure_id: '5D-ii', subcategory:) }
let(:s_acst_q1) { SurveyItem.find_by_survey_item_id 's-acst-q1' }
let(:s_acst_q2) { SurveyItem.find_by_survey_item_id 's-acst-q2' } # short form let(:s_acst_q1) { create(:survey_item, survey_item_id: 's-acst-q1', scale: s_acst) }
let(:s_acst_q3) { SurveyItem.find_by_survey_item_id 's-acst-q3' } let(:s_acst_q2) { create(:survey_item, survey_item_id: 's-acst-q2', scale: s_acst, on_short_form: true) } # short form
let(:s_poaf_q1) { SurveyItem.find_by_survey_item_id 's-poaf-q1' } let(:s_acst_q3) { create(:survey_item, survey_item_id: 's-acst-q3', scale: s_acst) }
let(:s_poaf_q2) { SurveyItem.find_by_survey_item_id 's-poaf-q2' } let(:s_poaf_q1) { create(:survey_item, survey_item_id: 's-poaf-q1', scale: s_poaf) }
let(:s_poaf_q3) { SurveyItem.find_by_survey_item_id 's-poaf-q3' } # short form let(:s_poaf_q2) { create(:survey_item, survey_item_id: 's-poaf-q2', scale: s_poaf) }
let(:s_poaf_q4) { SurveyItem.find_by_survey_item_id 's-poaf-q4' } let(:s_poaf_q3) { create(:survey_item, survey_item_id: 's-poaf-q3', scale: s_poaf, on_short_form: true) } # short form
let(:t_phya_q2) { SurveyItem.find_by_survey_item_id 't-phya-q2' } let(:s_poaf_q4) { create(:survey_item, survey_item_id: 's-poaf-q4', scale: s_poaf) }
let(:t_phya_q3) { SurveyItem.find_by_survey_item_id 't-phya-q3' } let(:t_phya_q2) { create(:survey_item, survey_item_id: 't-phya-q2', scale: t_phya) }
let(:t_phya_q3) { create(:survey_item, survey_item_id: 't-phya-q3', scale: t_phya) }
let(:s_acst) { Scale.find_by_scale_id 's-acst' }
let(:s_poaf) { Scale.find_by_scale_id 's-poaf' } let(:s_acst) { create(:scale, scale_id: 's-acst', measure:) }
let(:t_phya) { Scale.find_by_scale_id 't-phya' } let(:s_poaf) { create(:scale, scale_id: 's-poaf', measure:) }
let(:t_phya) { create(:scale, scale_id: 't-phya', measure:) }
let(:response_rate) { ResponseRate.find_by(subcategory:, school:, academic_year:) } let(:response_rate) { ResponseRate.find_by(school:, academic_year:) }
before do before do
Rails.application.load_seed short_form_survey
respondent respondent
end end
@ -47,7 +46,7 @@ describe ResponseRateLoader do
describe 'self.reset' do describe 'self.reset' do
context 'When resetting response rates' do context 'When resetting response rates' do
context 'and half the students responded to each question' do context 'and half the students responded to each question' do
before do before :each do
create_list(:survey_item_response, 5, survey_item: s_acst_q1, likert_score: 3, school:, academic_year:) create_list(:survey_item_response, 5, survey_item: s_acst_q1, likert_score: 3, school:, academic_year:)
create_list(:survey_item_response, 5, survey_item: s_acst_q2, likert_score: 3, school:, academic_year:) create_list(:survey_item_response, 5, survey_item: s_acst_q2, likert_score: 3, school:, academic_year:)
create_list(:survey_item_response, 5, survey_item: s_acst_q3, likert_score: 3, school:, academic_year:) create_list(:survey_item_response, 5, survey_item: s_acst_q3, likert_score: 3, school:, academic_year:)
@ -84,9 +83,10 @@ describe ResponseRateLoader do
end end
end end
context 'and only the first question for each scale was asked; e.g. like on a short form' do context 'and only the first question was asked; e.g. its on a short form and this is marked as a short form school' do
before do before do
create_list(:survey_item_response, 5, survey_item: s_acst_q1, likert_score: 3, school:, academic_year:) create_list(:survey_item_response, 5, survey_item: s_acst_q1, likert_score: 3, school:, academic_year:)
s_acst_q1.update(on_short_form: true)
create_list(:survey_item_response, 5, survey_item: s_poaf_q1, likert_score: 3, school:, academic_year:) create_list(:survey_item_response, 5, survey_item: s_poaf_q1, likert_score: 3, school:, academic_year:)
create_list(:survey_item_response, 5, survey_item: t_phya_q2, likert_score: 3, school:, academic_year:) create_list(:survey_item_response, 5, survey_item: t_phya_q2, likert_score: 3, school:, academic_year:)

Loading…
Cancel
Save