From d0219217de95579f157eea11b47a27947c658387 Mon Sep 17 00:00:00 2001 From: rebuilt Date: Tue, 7 Mar 2023 10:35:38 -0800 Subject: [PATCH] Convert response rate loader spec from using the seeder to using the factory --- app/services/response_rate_loader.rb | 24 ----------- spec/services/response_rate_loader_spec.rb | 50 +++++++++++----------- 2 files changed, 25 insertions(+), 49 deletions(-) diff --git a/app/services/response_rate_loader.rb b/app/services/response_rate_loader.rb index 98980b3d..7311b3da 100644 --- a/app/services/response_rate_loader.rb +++ b/app/services/response_rate_loader.rb @@ -4,11 +4,7 @@ class ResponseRateLoader def self.reset(schools: School.all, academic_years: AcademicYear.all, subcategories: Subcategory.all) subcategories.each do |subcategory| schools.each do |school| - next if test_env? && (school != milford) - academic_years.each do |academic_year| - next if test_env? && (academic_year != test_year) - process_response_rate(subcategory:, school:, academic_year:) end end @@ -17,18 +13,6 @@ class ResponseRateLoader 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:) student = StudentResponseRateCalculator.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?) 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 :test_env? end diff --git a/spec/services/response_rate_loader_spec.rb b/spec/services/response_rate_loader_spec.rb index 85020ba5..fc5acd73 100644 --- a/spec/services/response_rate_loader_spec.rb +++ b/spec/services/response_rate_loader_spec.rb @@ -1,42 +1,41 @@ require 'rails_helper' describe ResponseRateLoader do - let(:school) { School.find_by_slug 'milford-high-school' } - let(:academic_year) { AcademicYear.find_by_range '2020-21' } + let(:school) { create(:school, name: 'milford-high-school') } + let(:academic_year) { create(:academic_year, range: '2020-21') } let(:respondent) do - respondent = Respondent.find_or_initialize_by(school:, academic_year:) + respondent = create(:respondent, school:, academic_year:) respondent.total_students = 10 respondent.total_teachers = 10 respondent.save end let(:short_form_survey) do - survey = Survey.find_by(school:, academic_year:) + survey = create(:survey, school:, academic_year:) survey.form = :short survey.save survey end - let(:subcategory) { Subcategory.find_by_subcategory_id '5D' } - - 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_q3) { SurveyItem.find_by_survey_item_id 's-acst-q3' } - let(:s_poaf_q1) { SurveyItem.find_by_survey_item_id 's-poaf-q1' } - let(:s_poaf_q2) { SurveyItem.find_by_survey_item_id 's-poaf-q2' } - let(:s_poaf_q3) { SurveyItem.find_by_survey_item_id 's-poaf-q3' } # short form - let(:s_poaf_q4) { SurveyItem.find_by_survey_item_id 's-poaf-q4' } - let(:t_phya_q2) { SurveyItem.find_by_survey_item_id 't-phya-q2' } - let(:t_phya_q3) { SurveyItem.find_by_survey_item_id 't-phya-q3' } - - let(:s_acst) { Scale.find_by_scale_id 's-acst' } - let(:s_poaf) { Scale.find_by_scale_id 's-poaf' } - let(:t_phya) { Scale.find_by_scale_id 't-phya' } - - let(:response_rate) { ResponseRate.find_by(subcategory:, school:, academic_year:) } - + let(:subcategory) { create(:subcategory, subcategory_id: '5D', name: 'Health') } + let(:measure) { create(:measure, measure_id: '5D-ii', subcategory:) } + + let(:s_acst_q1) { create(:survey_item, survey_item_id: 's-acst-q1', scale: s_acst) } + let(:s_acst_q2) { create(:survey_item, survey_item_id: 's-acst-q2', scale: s_acst, on_short_form: true) } # short form + let(:s_acst_q3) { create(:survey_item, survey_item_id: 's-acst-q3', scale: s_acst) } + let(:s_poaf_q1) { create(:survey_item, survey_item_id: 's-poaf-q1', scale: s_poaf) } + let(:s_poaf_q2) { create(:survey_item, survey_item_id: 's-poaf-q2', scale: s_poaf) } + let(:s_poaf_q3) { create(:survey_item, survey_item_id: 's-poaf-q3', scale: s_poaf, on_short_form: true) } # short form + let(:s_poaf_q4) { create(:survey_item, survey_item_id: 's-poaf-q4', scale: s_poaf) } + 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) { create(:scale, scale_id: 's-acst', measure:) } + 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(school:, academic_year:) } before do - Rails.application.load_seed + short_form_survey respondent end @@ -47,7 +46,7 @@ describe ResponseRateLoader do describe 'self.reset' do context 'When resetting response rates' 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_q2, 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 - 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 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: t_phya_q2, likert_score: 3, school:, academic_year:)