Remove old schools during the seed process

This commit is contained in:
Liam Morley 2021-11-29 14:40:52 -05:00
parent f81874d082
commit 75c3a1fccc
2 changed files with 23 additions and 28 deletions

View file

@ -31,44 +31,27 @@ describe Seeder do
School.delete_all
end
it 'seeds new districts' do
it 'seeds new districts and schools' do
expect {
seeder.seed_districts_and_schools sample_districts_and_schools_csv
}.to change { District.count }.by(2)
end
it 'seeds new schools' do
expect {
seeder.seed_districts_and_schools sample_districts_and_schools_csv
}.to change { School.count }.by(2)
}.to change { District.count }.by(2)
.and change { School.count }.by(2)
end
context 'when partial data already exists' do
let!(:existing_district) { create(:district, name: 'Boston') }
let!(:removed_school) { create(:school, name: 'John Oldes Academy', dese_id: 12345, district: existing_district) }
let!(:existing_school) { create(:school, name: 'Sam Adams Elementary School', dese_id: 350302, slug: 'some-slug-for-sam-adams', district: existing_district) }
it 'only creates new districts' do
it 'only creates new districts and schools' do
expect {
seeder.seed_districts_and_schools sample_districts_and_schools_csv
}.to change { District.count }.by(1)
}.to change { District.count }.by(1)
.and change { School.count }.by(0) # +1 for new school, -1 for old school
new_district = District.find_by_name 'Attleboro'
expect(new_district.qualtrics_code).to eq 1
expect(new_district.slug).to eq 'attleboro'
end
it 'updates existing districts with the correct data' do
seeder.seed_districts_and_schools sample_districts_and_schools_csv
existing_district.reload
expect(existing_district.qualtrics_code).to eq 2
expect(existing_district.slug).to eq 'boston'
end
it 'only creates new schools' do
expect {
seeder.seed_districts_and_schools sample_districts_and_schools_csv
}.to change { School.count }.by(1)
new_school = School.find_by_name 'Attleboro High School'
expect(new_school.dese_id).to eq 160505
@ -76,14 +59,24 @@ describe Seeder do
expect(new_school.slug).to eq 'attleboro-high-school'
end
it 'updates existing schools with the qualtrics code' do
it 'updates existing districts and schools with the correct data' do
seeder.seed_districts_and_schools sample_districts_and_schools_csv
existing_district.reload
expect(existing_district.qualtrics_code).to eq 2
expect(existing_district.slug).to eq 'boston'
existing_school.reload
expect(existing_school.qualtrics_code).to eq 1
expect(existing_school.name).to eq 'Samuel Adams Elementary School'
expect(existing_school.slug).to eq 'some-slug-for-sam-adams'
end
it 'removes any schools not contained within the CSV' do
seeder.seed_districts_and_schools sample_districts_and_schools_csv
expect(School.where(id: removed_school)).not_to exist
end
end
end
@ -99,7 +92,7 @@ describe Seeder do
it 'creates new objects as necessary' do
expect {
seeder.seed_sqm_framework sample_sqm_framework_csv
}.to change { Category.count }.by(4)
}.to change { Category.count }.by(4)
.and change { Subcategory.count }.by(15)
.and change { Measure.count }.by(31)
.and change { SurveyItem.count }.by(136)
@ -112,7 +105,6 @@ describe Seeder do
end
it 'updates category data' do
seeder.seed_sqm_framework sample_sqm_framework_csv
teachers_leadership = Category.find_by_name 'Teachers & Leadership'
expect(teachers_leadership.slug).to eq 'teachers-and-leadership'
@ -167,5 +159,4 @@ describe Seeder do
def sample_sqm_framework_csv
Rails.root.join('spec', 'fixtures', 'sample_sqm_framework.csv')
end
end