chore: remove lowell seeding rules

mciea-main
Nelson Jovel 2 years ago
parent b88c4e0ab5
commit e7f06ef4e9

@ -1,14 +0,0 @@
module Rule
class SeedOnlyLowell
attr_reader :row
def initialize(row:)
@row = row
end
def skip_row?
district = row['District'].strip.downcase
'lowell' != district
end
end
end

@ -1,9 +0,0 @@
module Rule
class NoRule
def initialize(row:); end
def skip_row?
false
end
end
end

@ -1,16 +0,0 @@
module Rule
class SkipNonLowellSchools
attr_reader :row
def initialize(row:)
@row = row
end
def skip_row?
return true if row.school.nil?
return true if row.school.district.nil?
row.school.district.name != 'Lowell'
end
end
end

@ -1,7 +1,7 @@
# frozen_string_literal: true
class SurveyResponsesDataLoader
def load_data(filepath:, rules: [Rule::NoRule])
def load_data(filepath:)
File.open(filepath) do |file|
headers = file.first
headers_array = CSV.parse(headers).first
@ -9,15 +9,14 @@ class SurveyResponsesDataLoader
file.lazy.each_slice(500) do |lines|
survey_item_responses = CSV.parse(lines.join, headers:).map do |row|
process_row(row: SurveyItemValues.new(row:, headers: headers_array, survey_items: all_survey_items, schools:),
rules:)
process_row(row: SurveyItemValues.new(row:, headers: headers_array, survey_items: all_survey_items, schools:))
end
SurveyItemResponse.import survey_item_responses.compact.flatten, batch_size: 500, on_duplicate_key_update: :all
end
end
end
def from_file(file:, rules: [])
def from_file(file:)
headers = file.gets
headers_array = CSV.parse(headers).first
all_survey_items = survey_items(headers:)
@ -29,8 +28,7 @@ class SurveyResponsesDataLoader
next unless line.present?
CSV.parse(line, headers:).map do |row|
survey_item_responses << process_row(row: SurveyItemValues.new(row:, headers: headers_array, survey_items: all_survey_items, schools:),
rules:)
survey_item_responses << process_row(row: SurveyItemValues.new(row:, headers: headers_array, survey_items: all_survey_items, schools:))
end
row_count += 1
@ -70,14 +68,10 @@ class SurveyResponsesDataLoader
@speds ||= Sped.by_designation
end
def process_row(row:, rules:)
def process_row(row:)
return unless row.dese_id?
return unless row.school.present?
rules.each do |rule|
return if rule.new(row:).skip_row?
end
process_survey_items(row:)
end

@ -3,7 +3,6 @@ require "#{Rails.root}/app/lib/seeder"
describe Seeder do
let(:seeder) { Seeder.new }
let(:lowell_seeder) { Seeder.new rules: [Rule::SeedOnlyLowell] }
after :each do
DatabaseCleaner.clean
@ -98,17 +97,6 @@ describe Seeder do
expect(SurveyItemResponse.where(id: removed_survey_item_response)).not_to exist
end
end
context "when passing a rule to only load lowell schools" do
it "only loads lowell schools" do
expect do
lowell_seeder.seed_districts_and_schools sample_districts_and_schools_csv
end.to change { District.count }.by(1)
.and change {
School.count
}.by(1)
end
end
end
# context 'respondents' do

Loading…
Cancel
Save