mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 21:48:16 -08:00
Scrape enrollment and staffing information. Seed enrollment and staffing information. Update DatabaseCleaner so it cleans up leftover information in the database. Remove old admin csvs from codebase.
This commit is contained in:
parent
20d4f966e7
commit
06f9d2f0e9
27 changed files with 48177 additions and 4843 deletions
14733
spec/fixtures/sample_enrollment_data.csv
vendored
14733
spec/fixtures/sample_enrollment_data.csv
vendored
File diff suppressed because it is too large
Load diff
11067
spec/fixtures/sample_staffing_data.csv
vendored
Normal file
11067
spec/fixtures/sample_staffing_data.csv
vendored
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -27,7 +27,21 @@ Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
|
|||
# If you are not using ActiveRecord, you can remove this line.
|
||||
ActiveRecord::Migration.maintain_test_schema!
|
||||
|
||||
require 'database_cleaner/active_record'
|
||||
|
||||
RSpec.configure do |config|
|
||||
config.before(:suite) do
|
||||
DatabaseCleaner.strategy = :transaction
|
||||
DatabaseCleaner.clean_with(:truncation)
|
||||
end
|
||||
|
||||
config.before(:each) do
|
||||
DatabaseCleaner.start
|
||||
end
|
||||
|
||||
config.after(:each) do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
||||
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
||||
|
||||
|
|
@ -55,4 +69,22 @@ RSpec.configure do |config|
|
|||
config.filter_rails_from_backtrace!
|
||||
# arbitrary gems may also be filtered via:
|
||||
# config.filter_gems_from_backtrace("gem name")
|
||||
# config.before(:each) do
|
||||
# DatabaseCleaner.strategy = :deletion
|
||||
# end
|
||||
# config.append_after(:each) do
|
||||
# DatabaseCleaner.clean
|
||||
# end
|
||||
config.before(:suite) do
|
||||
DatabaseCleaner.strategy = :transaction
|
||||
DatabaseCleaner.clean_with(:truncation)
|
||||
end
|
||||
|
||||
config.before(:each) do
|
||||
DatabaseCleaner.start
|
||||
end
|
||||
|
||||
config.after(:each) do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,26 +1,26 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe EnrollmentLoader do
|
||||
let(:path_to_admin_data) { Rails.root.join('spec', 'fixtures', 'sample_enrollment_data.csv') }
|
||||
let(:ay_2022_23) { AcademicYear.find_by_range '2022-23' }
|
||||
let(:attleboro) { School.find_by_dese_id 160_505 }
|
||||
let(:winchester) { School.find_by_dese_id 3_440_505 }
|
||||
let(:beachmont) { School.find_by_dese_id 2_480_013 }
|
||||
let(:path_to_enrollment_data) { Rails.root.join('spec', 'fixtures', 'sample_enrollment_data.csv') }
|
||||
let(:ay_2022_23) { create(:academic_year, range: '2022-23') }
|
||||
|
||||
let(:attleboro) { School.find_or_create_by(name: 'Attleboro', dese_id: 160_505) }
|
||||
let(:beachmont) { School.find_or_create_by(name: 'Beachmont', dese_id: 2_480_013) }
|
||||
let(:winchester) { School.find_or_create_by(name: 'Winchester', dese_id: 3_440_505) }
|
||||
before :each do
|
||||
Rails.application.load_seed
|
||||
ay_2022_23
|
||||
attleboro
|
||||
beachmont
|
||||
winchester
|
||||
EnrollmentLoader.load_data filepath: path_to_enrollment_data
|
||||
end
|
||||
|
||||
after :each do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
|
||||
describe 'self.load_data' do
|
||||
before :each do
|
||||
EnrollmentLoader.load_data filepath: path_to_admin_data
|
||||
end
|
||||
context 'self.load_data' do
|
||||
it 'loads the correct enrollment numbers' do
|
||||
respondents = Respondent.where(school: attleboro, academic_year: ay_2022_23)
|
||||
academic_year = ay_2022_23
|
||||
expect(Respondent.find_by(school: attleboro, academic_year:).nine).to eq 506
|
||||
|
||||
|
|
@ -34,22 +34,4 @@ describe EnrollmentLoader do
|
|||
expect(Respondent.find_by(school: winchester, academic_year:).twelve).to eq 352
|
||||
end
|
||||
end
|
||||
|
||||
# describe 'output to console' do
|
||||
# it 'outputs a messsage saying a value has been rejected' do
|
||||
# output = capture_stdout { EnrollmentLoader.load_data filepath: path_to_admin_data }.gsub("\n", '')
|
||||
# expect(output).to eq 'Invalid score: 0.0 for school: Attleboro High School admin data item a-reso-i1 Invalid score: 100.0 for school: Winchester High School admin data item a-sust-i3 '
|
||||
# end
|
||||
# end
|
||||
end
|
||||
|
||||
# def capture_stdout
|
||||
# original_stdout = $stdout
|
||||
# $stdout = fake = StringIO.new
|
||||
# begin
|
||||
# yield
|
||||
# ensure
|
||||
# $stdout = original_stdout
|
||||
# end
|
||||
# fake.string
|
||||
# end
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ describe ResponseRateLoader do
|
|||
let(:school) { School.find_by_slug 'milford-high-school' }
|
||||
let(:academic_year) { AcademicYear.find_by_range '2020-21' }
|
||||
let(:respondent) do
|
||||
respondent = create(:respondent, school:, academic_year:)
|
||||
respondent = Respondent.find_or_initialize_by(school:, academic_year:)
|
||||
respondent.total_students = 10
|
||||
respondent.total_teachers = 10
|
||||
respondent.save
|
||||
|
|
@ -35,19 +35,19 @@ describe ResponseRateLoader do
|
|||
|
||||
let(:response_rate) { ResponseRate.find_by(subcategory:, school:, academic_year:) }
|
||||
|
||||
before :each do
|
||||
before do
|
||||
Rails.application.load_seed
|
||||
respondent
|
||||
end
|
||||
|
||||
after :each do
|
||||
after do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
|
||||
describe 'self.reset' do
|
||||
context 'When resetting response rates' do
|
||||
context 'and half the students responded to each question' do
|
||||
before :each do
|
||||
before do
|
||||
create_list(:survey_item_response, 5, survey_item: s_acst_q1, likert_score: 3, school:, academic_year:)
|
||||
create_list(:survey_item_response, 5, survey_item: s_acst_q2, likert_score: 3, school:, academic_year:)
|
||||
create_list(:survey_item_response, 5, survey_item: s_acst_q3, likert_score: 3, school:, academic_year:)
|
||||
|
|
@ -85,7 +85,7 @@ describe ResponseRateLoader do
|
|||
end
|
||||
|
||||
context 'and only the first question for each scale was asked; e.g. like on a short form' do
|
||||
before :each do
|
||||
before do
|
||||
create_list(:survey_item_response, 5, survey_item: s_acst_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:)
|
||||
|
|
@ -116,7 +116,7 @@ describe ResponseRateLoader do
|
|||
end
|
||||
|
||||
context 'and the school took the short form student survey' do
|
||||
before :each do
|
||||
before do
|
||||
create_list(:survey_item_response, 1, survey_item: s_acst_q1, likert_score: 3, school:, academic_year:)
|
||||
create_list(:survey_item_response, 6, survey_item: s_acst_q2, likert_score: 3, school:, academic_year:) # short form
|
||||
create_list(:survey_item_response, 1, survey_item: s_acst_q3, likert_score: 3, school:, academic_year:)
|
||||
|
|
|
|||
50
spec/services/staffing_loader_spec.rb
Normal file
50
spec/services/staffing_loader_spec.rb
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe StaffingLoader do
|
||||
let(:path_to_staffing_data) { Rails.root.join('spec', 'fixtures', 'sample_staffing_data.csv') }
|
||||
let(:ay_2022_23) { create(:academic_year, range: '2022-23') }
|
||||
let(:ay_2021_22) { create(:academic_year, range: '2021-22') }
|
||||
let(:attleboro) { School.find_or_create_by(name: 'Attleboro', dese_id: 160_505) }
|
||||
let(:beachmont) { School.find_or_create_by(name: 'Beachmont', dese_id: 2_480_013) }
|
||||
let(:winchester) { School.find_or_create_by(name: 'Winchester', dese_id: 3_440_505) }
|
||||
|
||||
before :each do
|
||||
School.destroy_all
|
||||
ay_2022_23
|
||||
ay_2021_22
|
||||
attleboro
|
||||
beachmont
|
||||
winchester
|
||||
StaffingLoader.load_data filepath: path_to_staffing_data
|
||||
StaffingLoader.clone_previous_year_data
|
||||
end
|
||||
|
||||
after :each do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
|
||||
context 'self.load_data' do
|
||||
it 'loads the correct staffing numbers' do
|
||||
academic_year = ay_2021_22
|
||||
expect(Respondent.find_by(school: attleboro, academic_year:).total_teachers).to eq 197.5
|
||||
|
||||
expect(Respondent.find_by(school: beachmont, academic_year:).total_teachers).to eq 56.4
|
||||
|
||||
expect(Respondent.find_by(school: winchester, academic_year:).total_teachers).to eq 149.8
|
||||
end
|
||||
|
||||
context 'when the staffing data is missing a school' do
|
||||
after :each do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
it 'fills in empty staffing numbers with the previous years data' do
|
||||
academic_year = ay_2022_23
|
||||
expect(Respondent.find_by(school: attleboro, academic_year:).total_teachers).to eq 197.5
|
||||
|
||||
expect(Respondent.find_by(school: beachmont, academic_year:).total_teachers).to eq 56.4
|
||||
|
||||
expect(Respondent.find_by(school: winchester, academic_year:).total_teachers).to eq 149.8
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -27,6 +27,10 @@ describe SurveyResponsesDataLoader do
|
|||
Rails.application.load_seed
|
||||
end
|
||||
|
||||
after :each do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
|
||||
describe 'self.load_data' do
|
||||
context 'loading teacher survey responses' do
|
||||
before :each do
|
||||
|
|
|
|||
|
|
@ -43,18 +43,18 @@ describe 'District Admin', js: true do
|
|||
# let(:username) { 'winchester' }
|
||||
# let(:password) { 'winchester!' }
|
||||
let(:respondents) do
|
||||
respondent = create(:respondent, school:, academic_year: ay_2021_22)
|
||||
respondent = Respondent.find_or_initialize_by(school:, academic_year: ay_2021_22)
|
||||
respondent.total_students = 8
|
||||
respondent.total_teachers = 8
|
||||
respondent.save
|
||||
|
||||
respondent = create(:respondent, school:, academic_year: ay_2019_20)
|
||||
respondent = Respondent.find_or_initialize_by(school:, academic_year: ay_2019_20)
|
||||
respondent.total_students = 8
|
||||
respondent.total_teachers = 8
|
||||
respondent.save
|
||||
end
|
||||
|
||||
before :each do
|
||||
before do
|
||||
Rails.application.load_seed
|
||||
|
||||
respondents
|
||||
|
|
@ -99,7 +99,7 @@ describe 'District Admin', js: true do
|
|||
SurveyItemResponse.import survey_item_responses
|
||||
end
|
||||
|
||||
after :each do
|
||||
after do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue