diff --git a/app/lib/seeder.rb b/app/lib/seeder.rb index 1e19eb85..338db0c2 100644 --- a/app/lib/seeder.rb +++ b/app/lib/seeder.rb @@ -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| diff --git a/app/services/enrollment_loader.rb b/app/services/enrollment_loader.rb index ad9fd75c..8d52b3e6 100644 --- a/app/services/enrollment_loader.rb +++ b/app/services/enrollment_loader.rb @@ -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 diff --git a/db/seeds.rb b/db/seeds.rb index 88d0e950..87d7a619 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -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') diff --git a/lib/tasks/data.rake b/lib/tasks/data.rake index 97dac8b1..90483e70 100644 --- a/lib/tasks/data.rake +++ b/lib/tasks/data.rake @@ -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') diff --git a/spec/lib/seeder_spec.rb b/spec/lib/seeder_spec.rb index 783fde1f..07708bd5 100644 --- a/spec/lib/seeder_spec.rb +++ b/spec/lib/seeder_spec.rb @@ -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 - - 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) - - 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 - - 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 + # 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 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 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 + + # 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