Load survey responses for revere somerville and wareham for the 2021-22 academic year

pull/1/head
rebuilt 4 years ago
parent 5a9e8b3586
commit 7fcf580591

@ -1,15 +1,8 @@
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)
milford = School.find_by_slug 'milford-high-school'
# ResponseRate.new(school:, academic_year:, subcategory:, student_response_rate: 50, teacher_response_rate: 50,
# meets_student_threshold: true, meets_teacher_threshold: true).save
test_year = AcademicYear.find_by_range '2020-21'
subcategories.each do |subcategory|
schools.each do |school|
next if ENV['RAILS_ENV'] == 'test' && !(school == milford)

@ -45,6 +45,7 @@ namespace :data do
puts 'Resetting response rates'
ResponseRateLoader.reset
Rails.cache.clear
puts "=====================> Completed loading #{ResponseRate.count} survey responses"
end
@ -52,6 +53,7 @@ namespace :data do
task reset_response_rates: :environment do
puts 'Resetting response rates'
ResponseRateLoader.reset
Rails.cache.clear
puts "=====================> Completed loading #{ResponseRate.count} survey responses"
end

@ -68,6 +68,25 @@ namespace :one_off do
ResponseRateLoader.reset
puts "=====================> Completed loading #{ResponseRate.count} survey responses"
end
desc 'load revere somerville warehame results for 2021-22'
task load_revere: :environment do
['2021-22_revere_somerville_wareham_student_survey_responses.csv',
'2021-22_revere_somerville_wareham_teacher_survey_responses.csv'].each do |filepath|
filepath = Rails.root.join('data', 'survey_responses', filepath)
puts "=====================> Loading data from csv at path: #{filepath}"
SurveyResponsesDataLoader.load_data filepath:
end
puts 'Resetting response rates'
revere = District.find_by_name 'Revere'
somerville = District.find_by_name 'Somerville'
wareham = District.find_by_name 'Wareham'
academic_year = AcademicYear.find_by_range '2021-22'
ResponseRateLoader.reset(schools: revere.schools, academic_years: [academic_year])
ResponseRateLoader.reset(schools: somerville.schools, academic_years: [academic_year])
ResponseRateLoader.reset(schools: wareham.schools, academic_years: [academic_year])
Rails.cache.clear
puts "=====================> Completed loading #{ResponseRate.count} survey responses"
end
desc 'list scales that have no survey responses'
task list_scales_that_lack_survey_responses: :environment do

@ -58,7 +58,7 @@ describe ResponseRateLoader do
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_q3, likert_score: 3, school:, academic_year:)
ResponseRateLoader.reset
ResponseRateLoader.reset(schools: [school], academic_years: [academic_year])
end
it 'populates the database with response rates' do
@ -76,7 +76,7 @@ describe ResponseRateLoader do
context 'when running the loader a second time' do
it 'is idempotent' do
response_count = ResponseRate.count
ResponseRateLoader.reset
ResponseRateLoader.reset(schools: [school], academic_years: [academic_year])
second_count = ResponseRate.count
expect(response_count).to eq second_count
@ -90,7 +90,7 @@ describe ResponseRateLoader do
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:)
ResponseRateLoader.reset
ResponseRateLoader.reset(schools: [school], academic_years: [academic_year])
end
it 'only takes into account the first question and ignores the other questions in the scale' do
@ -106,7 +106,7 @@ describe ResponseRateLoader do
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:)
ResponseRateLoader.reset
ResponseRateLoader.reset(schools: [school], academic_years: [academic_year])
end
it 'since no score can be calculated, it returns a default of 100' do
@ -128,7 +128,7 @@ describe ResponseRateLoader do
create_list(:survey_item_response, 1, survey_item: t_phya_q3, likert_score: 3, school:, academic_year:)
short_form_survey
ResponseRateLoader.reset
ResponseRateLoader.reset(schools: [school], academic_years: [academic_year])
end
it 'only counts responses from survey items on the short form' do

Loading…
Cancel
Save