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 class ResponseRateLoader
def self.reset def self.reset(schools: School.all, academic_years: AcademicYear.all, subcategories: Subcategory.all)
schools = School.all
academic_years = AcademicYear.all
subcategories = Subcategory.all
milford = School.find_by_slug 'milford-high-school' 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' test_year = AcademicYear.find_by_range '2020-21'
subcategories.each do |subcategory| subcategories.each do |subcategory|
schools.each do |school| schools.each do |school|
next if ENV['RAILS_ENV'] == 'test' && !(school == milford) next if ENV['RAILS_ENV'] == 'test' && !(school == milford)

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

@ -68,6 +68,25 @@ namespace :one_off do
ResponseRateLoader.reset ResponseRateLoader.reset
puts "=====================> Completed loading #{ResponseRate.count} survey responses" puts "=====================> Completed loading #{ResponseRate.count} survey responses"
end 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' desc 'list scales that have no survey responses'
task list_scales_that_lack_survey_responses: :environment do 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_q2, likert_score: 3, school:, academic_year:)
create_list(:survey_item_response, 5, survey_item: t_phya_q3, 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 end
it 'populates the database with response rates' do it 'populates the database with response rates' do
@ -76,7 +76,7 @@ describe ResponseRateLoader do
context 'when running the loader a second time' do context 'when running the loader a second time' do
it 'is idempotent' do it 'is idempotent' do
response_count = ResponseRate.count response_count = ResponseRate.count
ResponseRateLoader.reset ResponseRateLoader.reset(schools: [school], academic_years: [academic_year])
second_count = ResponseRate.count second_count = ResponseRate.count
expect(response_count).to eq second_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: 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:)
ResponseRateLoader.reset ResponseRateLoader.reset(schools: [school], academic_years: [academic_year])
end end
it 'only takes into account the first question and ignores the other questions in the scale' do 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: 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:)
ResponseRateLoader.reset ResponseRateLoader.reset(schools: [school], academic_years: [academic_year])
end end
it 'since no score can be calculated, it returns a default of 100' do 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:) create_list(:survey_item_response, 1, survey_item: t_phya_q3, likert_score: 3, school:, academic_year:)
short_form_survey short_form_survey
ResponseRateLoader.reset ResponseRateLoader.reset(schools: [school], academic_years: [academic_year])
end end
it 'only counts responses from survey items on the short form' do it 'only counts responses from survey items on the short form' do

Loading…
Cancel
Save