mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-09 07:28:41 -07:00
Load student respondent information from enrollment loader
This commit is contained in:
parent
79f7915edf
commit
ae6d7151b3
5 changed files with 47 additions and 73 deletions
|
|
@ -64,38 +64,6 @@ class Seeder
|
|||
end
|
||||
end
|
||||
|
||||
def seed_respondents(csv_file)
|
||||
schools = []
|
||||
CSV.parse(File.read(csv_file), headers: true) do |row|
|
||||
dese_id = row['DESE School ID'].strip.to_i
|
||||
|
||||
district_name = row['District'].strip
|
||||
next if rules.any? do |rule|
|
||||
rule.new(row:).skip_row?
|
||||
end
|
||||
|
||||
district = District.find_or_create_by! name: district_name
|
||||
|
||||
school = School.find_by(dese_id:, district:)
|
||||
schools << school
|
||||
|
||||
academic_years = AcademicYear.all
|
||||
academic_years.each do |academic_year|
|
||||
total_students = row["Total Students for Response Rate (#{academic_year.range})"]
|
||||
total_teachers = row["Total Teachers for Response Rate (#{academic_year.range})"]
|
||||
total_students = remove_commas(total_students)
|
||||
total_teachers = remove_commas(total_teachers)
|
||||
respondent = Respondent.find_or_initialize_by(school:, academic_year:)
|
||||
respondent.total_students = total_students
|
||||
respondent.total_teachers = total_teachers
|
||||
respondent.academic_year = academic_year
|
||||
respondent.save
|
||||
end
|
||||
end
|
||||
|
||||
Respondent.where.not(school: schools).destroy_all
|
||||
end
|
||||
|
||||
def seed_sqm_framework(csv_file)
|
||||
admin_data_item_ids = []
|
||||
CSV.parse(File.read(csv_file), headers: true) do |row|
|
||||
|
|
|
|||
|
|
@ -4,13 +4,18 @@ require 'csv'
|
|||
|
||||
class EnrollmentLoader
|
||||
def self.load_data(filepath:)
|
||||
schools = []
|
||||
CSV.parse(File.read(filepath), headers: true) do |row|
|
||||
row = EnrollmentRowValues.new(row:)
|
||||
|
||||
next unless row.school.present? && row.academic_year.present?
|
||||
|
||||
schools << row.school
|
||||
|
||||
create_enrollment_entry(row:)
|
||||
end
|
||||
|
||||
# Respondent.where.not(school: schools).destroy_all
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ seeder = Seeder.new
|
|||
seeder.seed_academic_years '2016-17', '2017-18', '2018-19', '2019-20', '2020-21', '2021-22', '2022-23'
|
||||
seeder.seed_districts_and_schools Rails.root.join('data', 'master_list_of_schools_and_districts.csv')
|
||||
seeder.seed_surveys Rails.root.join('data', 'master_list_of_schools_and_districts.csv')
|
||||
seeder.seed_respondents Rails.root.join('data', 'master_list_of_schools_and_districts.csv')
|
||||
# seeder.seed_respondents Rails.root.join('data', 'master_list_of_schools_and_districts.csv')
|
||||
seeder.seed_sqm_framework Rails.root.join('data', 'sqm_framework.csv')
|
||||
seeder.seed_demographics Rails.root.join('data', 'demographics.csv')
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ namespace :data do
|
|||
seeder.seed_academic_years '2016-17', '2017-18', '2018-19', '2019-20', '2020-21', '2021-22', '2022-23'
|
||||
seeder.seed_districts_and_schools Rails.root.join('data', 'master_list_of_schools_and_districts.csv')
|
||||
seeder.seed_surveys Rails.root.join('data', 'master_list_of_schools_and_districts.csv')
|
||||
seeder.seed_respondents Rails.root.join('data', 'master_list_of_schools_and_districts.csv')
|
||||
seeder.seed_sqm_framework Rails.root.join('data', 'sqm_framework.csv')
|
||||
seeder.seed_demographics Rails.root.join('data', 'demographics.csv')
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,12 @@ describe Seeder do
|
|||
let(:seeder) { Seeder.new }
|
||||
let(:lowell_seeder) { Seeder.new rules: [Rule::SeedOnlyLowell] }
|
||||
|
||||
after :each do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
|
||||
context 'academic years' do
|
||||
before { AcademicYear.delete_all }
|
||||
# before { AcademicYear.delete_all }
|
||||
|
||||
it 'seeds new academic years' do
|
||||
expect do
|
||||
|
|
@ -53,7 +57,6 @@ describe Seeder do
|
|||
create(:school, name: 'John Oldest Academy', dese_id: 12_345, district: existing_district)
|
||||
end
|
||||
let!(:removed_survey_item_response) { create(:survey_item_response, school: removed_school) }
|
||||
let!(:removed_respondent) { create(:respondent, school: removed_school) }
|
||||
let!(:removed_survey) { create(:survey, school: removed_school) }
|
||||
let!(:existing_school) do
|
||||
create(:school, name: 'Sam Adams Elementary School', dese_id: 350_302, slug: 'some-slug-for-sam-adams',
|
||||
|
|
@ -96,7 +99,6 @@ describe Seeder do
|
|||
|
||||
expect(School.where(id: removed_school)).not_to exist
|
||||
expect(SurveyItemResponse.where(id: removed_survey_item_response)).not_to exist
|
||||
expect(Respondent.where(id: removed_respondent)).not_to exist
|
||||
expect(Survey.where(id: removed_survey)).not_to exist
|
||||
end
|
||||
end
|
||||
|
|
@ -113,48 +115,48 @@ describe Seeder do
|
|||
end
|
||||
end
|
||||
|
||||
context 'respondents' do
|
||||
before :each do
|
||||
create(:academic_year, range: '2020-21')
|
||||
seeder.seed_districts_and_schools sample_districts_and_schools_csv
|
||||
end
|
||||
# context 'respondents' do
|
||||
# before :each do
|
||||
# create(:academic_year, range: '2020-21')
|
||||
# seeder.seed_districts_and_schools sample_districts_and_schools_csv
|
||||
# end
|
||||
|
||||
it 'seeds the total number of respondents for a school' do
|
||||
expect do
|
||||
seeder.seed_respondents sample_districts_and_schools_csv
|
||||
end.to change { Respondent.count }.by(School.count)
|
||||
end
|
||||
# it 'seeds the total number of respondents for a school' do
|
||||
# expect do
|
||||
# seeder.seed_respondents sample_districts_and_schools_csv
|
||||
# end.to change { Respondent.count }.by(School.count)
|
||||
# end
|
||||
|
||||
it 'seeds idempotently' do
|
||||
expect do
|
||||
seeder.seed_respondents sample_districts_and_schools_csv
|
||||
end.to change { Respondent.count }.by(School.count)
|
||||
# it 'seeds idempotently' do
|
||||
# expect do
|
||||
# seeder.seed_respondents sample_districts_and_schools_csv
|
||||
# end.to change { Respondent.count }.by(School.count)
|
||||
|
||||
expect(Respondent.all.count).to eq School.count
|
||||
# expect(Respondent.all.count).to eq School.count
|
||||
|
||||
expect do
|
||||
seeder.seed_respondents sample_districts_and_schools_csv
|
||||
end.to change { Respondent.count }.by(0)
|
||||
end
|
||||
# expect do
|
||||
# seeder.seed_respondents sample_districts_and_schools_csv
|
||||
# end.to change { Respondent.count }.by(0)
|
||||
# end
|
||||
|
||||
it 'seeds new respondents for every year in the database' do
|
||||
expect do
|
||||
seeder.seed_respondents sample_districts_and_schools_csv
|
||||
end.to change { Respondent.count }.by School.count
|
||||
# it 'seeds new respondents for every year in the database' do
|
||||
# expect do
|
||||
# seeder.seed_respondents sample_districts_and_schools_csv
|
||||
# end.to change { Respondent.count }.by School.count
|
||||
|
||||
expect do
|
||||
create(:academic_year, range: '2019-20')
|
||||
seeder.seed_respondents sample_districts_and_schools_csv
|
||||
end.to change { Respondent.count }.by School.count
|
||||
end
|
||||
it 'seeds the total number of students and teachers even if the original number includes commas' do
|
||||
seeder.seed_respondents sample_districts_and_schools_csv
|
||||
school = School.find_by_name('Attleboro High School')
|
||||
academic_year = AcademicYear.find_by_range('2020-21')
|
||||
school_with_over_one_thousand_student_respondents = Respondent.where(school:, academic_year:).first
|
||||
expect(school_with_over_one_thousand_student_respondents.total_students).to eq 1792
|
||||
end
|
||||
end
|
||||
# expect do
|
||||
# create(:academic_year, range: '2019-20')
|
||||
# seeder.seed_respondents sample_districts_and_schools_csv
|
||||
# end.to change { Respondent.count }.by School.count
|
||||
# end
|
||||
# it 'seeds the total number of students and teachers even if the original number includes commas' do
|
||||
# seeder.seed_respondents sample_districts_and_schools_csv
|
||||
# school = School.find_by_name('Attleboro High School')
|
||||
# academic_year = AcademicYear.find_by_range('2020-21')
|
||||
# school_with_over_one_thousand_student_respondents = Respondent.where(school:, academic_year:).first
|
||||
# expect(school_with_over_one_thousand_student_respondents.total_students).to eq 1792
|
||||
# end
|
||||
# end
|
||||
|
||||
context 'surveys' do
|
||||
before :each do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue