diff --git a/.dir-locals.el b/.dir-locals.el deleted file mode 100644 index 578abafc03..0000000000 --- a/.dir-locals.el +++ /dev/null @@ -1,3 +0,0 @@ -((nil . ((indent-tabs-mode . nil) - (tab-width . 2) - (js-indent-level . 2)))) diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 497e443dcc..0000000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -Sanitize.js \ No newline at end of file diff --git a/.gitignore b/.gitignore index e330c585ae..ba853dd3c6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,46 +1,94 @@ +# See https://github.com/github/gitignore for helpful suggestions. + +# OS X .DS_Store + +# Rails temporary files **.orig /log /tmp -/sketch -/data -coverage -spec/logs/logs.txt -dump.rdb -# Node.js +# Artificact of running simplecov analysis task +/coverage + +# Node.js dependencies and logs node_modules yarn-debug.log* yarn-error.log* -# This holds configuration for testing production import scripts locally, so it shouldn't be checked into -# source control. +# Build artifacts from `yarn build` +/public/build +/public/dev + +# In past development setups, files were used to holds configuration for +# testing production import scripts by running them locally and connecting to +# production services. Developers should avoid working directly with production +# credentials, and should use a Heroku dyno rather than connecting to other +# production services directly when possible. +# This is kept here defensively in case this file exists and contains any +# secrets. config/local_env.yml +.env # Use env initializers and read ENV variables instead, no good # comes from storing secrets on disk (this was deprecated # in Rails 5.2, but keep in here preventatively anyway). config/secrets.yml -## Environment normalisation: -/.bundle -# these should all be checked in to normalise the environment: -# Gemfile.lock, .ruby-version, .ruby-gemset - -# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: -.rvmrc - -# Editor configuration +# See README for recommended Ruby and development environment setup +# (eg, .ruby-version etc. should be checked into source). +# Editor configuration (Sublime is the only supported setup) studentinsights.sublime-workspace -.dir-locals.el -public/build -public/dev -# For qgsocksify +# Artificat from running qgsocksify. Defensive against ever checking this in, +# in case it contains any secrets. socks.conf # Specifically for gh-pages and jekyll _site/ .sass-cache/ .jekyll-metadata + + +# Exclude all potential data files, unless explicitly safelisted. +# This is a defense against accidentally saving production data files +# into the project folder. Developers should avoid working with production +# data whenever possible, and avoid ever putting production data in the +# project folder, but this is another layer of defense. +# +# These commands can be helpful for auditing: +# +# $ find . -not -path './node_modules/*' -not -path './coverage/*' -type f -name "*.json" +# $ git status --ignored +# $ git clean -d # clean and remove ignored files +# +*.json +!/app.json +!/jest.json +!/package.json +!/spec/importers/helpers/data_flows_for_other_importers.json +!/spec/importers/file_importers/data_flows_fixture.json + +*.csv +!spec/fixtures/*.csv +!spec/importers/*.csv + +*.sql +!/x2_export/sql/*.sql + +*.xml +!/public/browserconfig.xml +!/x2_export/xml/*.xml + +*.zip +!/spec/importers/iep_import/iep-pdfs-for-test-1.zip +!/spec/importers/iep_import/iep-pdfs-for-test-2.zip + +*.log + +*.sqlite3 + +# The /data folder is not currently used, but was previously used for local +# analysis of production data, so defensively ignore anything there as well. +/data diff --git a/.pairs b/.pairs deleted file mode 100644 index a88c8da9d3..0000000000 --- a/.pairs +++ /dev/null @@ -1,10 +0,0 @@ -pairs: - dr: Doc Ritezel; doc - as: Alex Soble; alex - gs: Grant Smith; grant - -email: - prefix: asoble - domain: gmail.com - -global: true diff --git a/.rubocop.yml b/.rubocop.yml index 76ba7819a5..6fde7d2390 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -9,7 +9,6 @@ AllCops: - 'node_modules/**/*' - 'public/**/*' - 'scripts/**/*' - - 'sketch/**/*' - 'vendor/**/*' - 'x2_export/**/*' diff --git a/app/importers/helpers/fuzzy_student_matcher.rb b/app/importers/helpers/fuzzy_student_matcher.rb index cf2eea012b..92dd61b744 100644 --- a/app/importers/helpers/fuzzy_student_matcher.rb +++ b/app/importers/helpers/fuzzy_student_matcher.rb @@ -8,7 +8,7 @@ # output = matcher.match_file(file_text) {|row| matcher.match_from_last_first(row['Student_Name']) } class FuzzyStudentMatcher def initialize(options = {}) - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @active_students_only = options.fetch(:active_students_only, false) reset_counters! end diff --git a/app/importers/helpers/simple_syncer.rb b/app/importers/helpers/simple_syncer.rb index 4ea8368262..755a29cc60 100644 --- a/app/importers/helpers/simple_syncer.rb +++ b/app/importers/helpers/simple_syncer.rb @@ -1,7 +1,7 @@ # experimental class SimpleSyncer def initialize(options = {}) - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @syncer = options.fetch(:syncer, RecordSyncer.new(log: @log)) @log_frequency = options.fetch(:log_frequency, 100) end diff --git a/app/importers/homework_help_importer/homework_help_importer.rb b/app/importers/homework_help_importer/homework_help_importer.rb index 3cb4a3112b..a2f0e25d71 100644 --- a/app/importers/homework_help_importer/homework_help_importer.rb +++ b/app/importers/homework_help_importer/homework_help_importer.rb @@ -9,7 +9,7 @@ class HomeworkHelpImporter def initialize(educator_id, options = {}) @educator_id = educator_id - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @matcher = options.fetch(:matcher, ImportMatcher.new) end diff --git a/app/importers/iep_import/iep_pdf_import_job.rb b/app/importers/iep_import/iep_pdf_import_job.rb index 1b1d26497f..d6360a8c07 100644 --- a/app/importers/iep_import/iep_pdf_import_job.rb +++ b/app/importers/iep_import/iep_pdf_import_job.rb @@ -24,7 +24,7 @@ def initialize(options = {}) @time_now = options.fetch(:time_now, Time.now) @s3_client = options.fetch(:s3_client, Aws::S3::Client.new) - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) end # This imports all the IEP PDFs from a zip that diff --git a/app/importers/import_task.rb b/app/importers/import_task.rb index e5c6445c14..a104ddf213 100644 --- a/app/importers/import_task.rb +++ b/app/importers/import_task.rb @@ -15,7 +15,7 @@ def initialize(options:) # to skip updating any indexes after (eg, when tuning a particular job) @skip_index_updates = @options.fetch('skip_index_updates', false) - @log = Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT + @log = Rails.env.test? ? LogHelper::FakeLog.new : STDOUT end def connect_transform_import diff --git a/app/importers/mtss_referral/mtss_referral_processor.rb b/app/importers/mtss_referral/mtss_referral_processor.rb index 99a0349ac5..08365a48c4 100644 --- a/app/importers/mtss_referral/mtss_referral_processor.rb +++ b/app/importers/mtss_referral/mtss_referral_processor.rb @@ -7,7 +7,7 @@ # event_notes = rows.map {|row| EventNote.create!(row) };nil class MtssReferralProcessor def initialize(options = {}) - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @matcher = ImportMatcher.new @fuzzy_student_matcher = FuzzyStudentMatcher.new diff --git a/app/importers/reading/f_and_p_processor.rb b/app/importers/reading/f_and_p_processor.rb index 7f0795d87b..3cc4da9d4a 100644 --- a/app/importers/reading/f_and_p_processor.rb +++ b/app/importers/reading/f_and_p_processor.rb @@ -12,7 +12,7 @@ class FAndPProcessor def initialize(benchmark_date, educator_id, options = {}) @benchmark_date = benchmark_date @educator_id = educator_id - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @matcher = options.fetch(:matcher, ImportMatcher.new) end diff --git a/app/importers/reading/heggerty_processor.rb b/app/importers/reading/heggerty_processor.rb index cd1d556cf4..3239d2f7a1 100644 --- a/app/importers/reading/heggerty_processor.rb +++ b/app/importers/reading/heggerty_processor.rb @@ -14,7 +14,7 @@ def initialize(uploaded_by_educator_id, upload_filename, options = {}) @uploaded_by_educator_id = uploaded_by_educator_id @upload_filename = upload_filename - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @time_now = options.fetch(:time_now, Time.now) @matcher = options.fetch(:matcher, ImportMatcher.new) diff --git a/app/importers/reading/mega_reading_processor.rb b/app/importers/reading/mega_reading_processor.rb index d77e584390..a562642cae 100644 --- a/app/importers/reading/mega_reading_processor.rb +++ b/app/importers/reading/mega_reading_processor.rb @@ -14,7 +14,7 @@ class MegaReadingProcessor def initialize(educator_id, benchmark_school_year, options = {}) @educator_id = educator_id @benchmark_school_year = benchmark_school_year - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @matcher = options.fetch(:matcher, ImportMatcher.new) # The standard 8/20/19 template has two extra rows explaining the columns, diff --git a/app/importers/reading/reading_benchmark_sheets_importer.rb b/app/importers/reading/reading_benchmark_sheets_importer.rb index 5ac79212ea..b34b9b84d4 100644 --- a/app/importers/reading/reading_benchmark_sheets_importer.rb +++ b/app/importers/reading/reading_benchmark_sheets_importer.rb @@ -20,7 +20,7 @@ def initialize(options:) if @school_year != 2019 raise "aborting because of unexpected school_year; review the syncer scoping closely before running on another year" end - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @dry_run = options.fetch(:dry_run, false) @fetcher = options.fetch(:fetcher, GoogleSheetsFetcher.new(log: @log)) @syncer = ::RecordSyncer.new(log: @log) diff --git a/app/importers/student_meeting/flat_note_importer.rb b/app/importers/student_meeting/flat_note_importer.rb index e213ae0bd5..79e441eb15 100644 --- a/app/importers/student_meeting/flat_note_importer.rb +++ b/app/importers/student_meeting/flat_note_importer.rb @@ -2,7 +2,7 @@ # the survey content into `text`). class FlatNoteImporter def initialize(options = {}) - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) end # Map `parsed_rows` into `EventNote` attributes, adding in `note_title` to each note diff --git a/app/importers/student_meeting/student_meeting_importer.rb b/app/importers/student_meeting/student_meeting_importer.rb index a1cd84c870..24378e52b6 100644 --- a/app/importers/student_meeting/student_meeting_importer.rb +++ b/app/importers/student_meeting/student_meeting_importer.rb @@ -15,7 +15,7 @@ def self.data_flow end def initialize(options:) - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @school_year = options.fetch(:school_year, SchoolYear.to_school_year(Time.now)) @explicit_sheet_id = options.fetch(:explicit_sheet_id, nil) @fetcher = options.fetch(:fetcher, GoogleSheetsFetcher.new(log: @log)) diff --git a/app/importers/student_meeting/survey_reader.rb b/app/importers/student_meeting/survey_reader.rb index df41eb55c2..c5608501d8 100644 --- a/app/importers/student_meeting/survey_reader.rb +++ b/app/importers/student_meeting/survey_reader.rb @@ -17,7 +17,7 @@ def initialize(file_text, options = {}) @file_text = file_text @source_key = options[:source_key] @config = options[:config] - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @google_email_address_mapping = options.fetch(:google_email_address_mapping, PerDistrict.new.google_email_address_mapping) @matcher = ImportMatcher.new diff --git a/app/importers/student_voice_surveys/generic_survey_processor.rb b/app/importers/student_voice_surveys/generic_survey_processor.rb index affbc05ac7..f70243c166 100644 --- a/app/importers/student_voice_surveys/generic_survey_processor.rb +++ b/app/importers/student_voice_surveys/generic_survey_processor.rb @@ -4,7 +4,7 @@ # See also older survey_reader.rb, this is preferred for new code. class GenericSurveyProcessor def initialize(options, &block) - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @process_row_or_nil_block = block reset_counters! diff --git a/app/importers/student_voice_surveys/mid_year_survey_importer.rb b/app/importers/student_voice_surveys/mid_year_survey_importer.rb index 9e6c967083..dcfe750086 100644 --- a/app/importers/student_voice_surveys/mid_year_survey_importer.rb +++ b/app/importers/student_voice_surveys/mid_year_survey_importer.rb @@ -8,7 +8,7 @@ # records = importer.create!(file_text);nil class MidYearSurveyImporter def initialize(educator_id, form_url, options = {}) - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @educator_id = educator_id @form_url = form_url diff --git a/app/importers/student_voice_surveys/q2_self_reflection_importer.rb b/app/importers/student_voice_surveys/q2_self_reflection_importer.rb index ffaf6b24f9..2df96bb090 100644 --- a/app/importers/student_voice_surveys/q2_self_reflection_importer.rb +++ b/app/importers/student_voice_surveys/q2_self_reflection_importer.rb @@ -8,7 +8,7 @@ # records = importer.create!(file_text);nil class Q2SelfReflectionImporter def initialize(educator_id, form_url, options = {}) - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @educator_id = educator_id @form_url = form_url diff --git a/app/importers/student_voice_surveys/student_voice_survey_uploader.rb b/app/importers/student_voice_surveys/student_voice_survey_uploader.rb index 53942b0ab6..95dec9f66a 100644 --- a/app/importers/student_voice_surveys/student_voice_survey_uploader.rb +++ b/app/importers/student_voice_surveys/student_voice_survey_uploader.rb @@ -5,7 +5,7 @@ class StudentVoiceSurveyUploader def initialize(file_text, upload_attrs, options = {}) @file_text = file_text @upload_attrs = upload_attrs - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @matcher = ImportMatcher.new reset_counters! end diff --git a/app/importers/team_membership_import/team_membership_importer.rb b/app/importers/team_membership_import/team_membership_importer.rb index a671869bf6..adc42b37d4 100644 --- a/app/importers/team_membership_import/team_membership_importer.rb +++ b/app/importers/team_membership_import/team_membership_importer.rb @@ -19,7 +19,7 @@ def self.data_flow end def initialize(options:) - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @school_year = options.fetch(:school_year, SchoolYear.to_school_year(Time.now)) @explicit_folder_id = options.fetch(:explicit_folder_id, nil) @skip_explanation_rows_count = options.fetch(:skip_explanation_rows_count, 1) diff --git a/app/importers/transitions/bedford_davis_services_processor.rb b/app/importers/transitions/bedford_davis_services_processor.rb index f3b09796b9..9162c8ae7e 100644 --- a/app/importers/transitions/bedford_davis_services_processor.rb +++ b/app/importers/transitions/bedford_davis_services_processor.rb @@ -20,7 +20,7 @@ def initialize(recorded_by_educator, options = {}) @time_now = options.fetch(:time_now, Time.now) @school_year = options.fetch(:school_year, SchoolYear.to_school_year(@time_now)) - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @matcher = ImportMatcher.new end diff --git a/app/importers/transitions/bedford_davis_social_emotional_processor.rb b/app/importers/transitions/bedford_davis_social_emotional_processor.rb index 5d3b476ab7..8e2e797d17 100644 --- a/app/importers/transitions/bedford_davis_social_emotional_processor.rb +++ b/app/importers/transitions/bedford_davis_social_emotional_processor.rb @@ -18,7 +18,7 @@ def initialize(default_educator, options = {}) Rollbar.warn('deprecation-warning, see RestrictedNotesProcessor and migrate to `restricted_notes`') end - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @matcher = ImportMatcher.new @time_now = options.fetch(:time_now, Time.now) @processor = GenericSurveyProcessor.new(log: @log) do |row| diff --git a/app/importers/transitions/bedford_davis_transition_notes_processor.rb b/app/importers/transitions/bedford_davis_transition_notes_processor.rb index 47537cb442..b2d34e0f8c 100644 --- a/app/importers/transitions/bedford_davis_transition_notes_processor.rb +++ b/app/importers/transitions/bedford_davis_transition_notes_processor.rb @@ -14,7 +14,7 @@ class BedfordDavisTransitionNotesProcessor def initialize(educator, form_url, options = {}) Rollbar.warn('deprecation-warning: migrate to `services_checklist` and `teacher_forms` templates') - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @educator = educator @form_url = form_url diff --git a/app/importers/transitions/bedford_sixth_grade_transition_processor.rb b/app/importers/transitions/bedford_sixth_grade_transition_processor.rb index 27573bcdc1..d0ebddf986 100644 --- a/app/importers/transitions/bedford_sixth_grade_transition_processor.rb +++ b/app/importers/transitions/bedford_sixth_grade_transition_processor.rb @@ -16,7 +16,7 @@ class BedfordSixthGradeTransitionProcessor def initialize(educator_id, form_url, options = {}) Rollbar.warn('deprecation-warning') - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @educator_id = educator_id @form_url = form_url diff --git a/app/importers/transitions/bedford_teacher_transition_processor.rb b/app/importers/transitions/bedford_teacher_transition_processor.rb index db26497b9e..afdfa74ded 100644 --- a/app/importers/transitions/bedford_teacher_transition_processor.rb +++ b/app/importers/transitions/bedford_teacher_transition_processor.rb @@ -2,7 +2,7 @@ class BedfordTeacherTransitionProcessor def initialize(educator, options = {}) Rollbar.warn('deprecation-warning, see `FormToNotesProcessor` and `teacher_forms` format') - @log = options.fetch(:log, Rails.env.test? ? LogHelper::Redirect.instance.file : STDOUT) + @log = options.fetch(:log, Rails.env.test? ? LogHelper::FakeLog.new : STDOUT) @educator = educator @matcher = ImportMatcher.new diff --git a/docs/prototypes/sped_referral_packet.txt b/docs/prototypes/sped_referral_packet.txt deleted file mode 100644 index 71a91f2aba..0000000000 --- a/docs/prototypes/sped_referral_packet.txt +++ /dev/null @@ -1,41 +0,0 @@ ----------------------------------------------------------------- -Somerville Public Schools - SPED referral packet - Report date: 3/3/2016 - Generated by: Uri Harel - Source: https://somerville.studentinsights.org/students/8 ----------------------------------------------------------------- - -Chip Kenobi - Birthdate: 12/19/2005 - Language: Fluent English - Disability: None - 504 plan: None - -Current services: - Since 11/11/2015 - Counseling, in-house - Since 10/08/2015 - Behavior contract - -Attendance record: - NOTE: 2015-2016 school year is still in progress - Year: 2015-2016 - Attendance: 61% - Absences: 21 - Tardies: 6 - Year: 2014-2015 - Attendance: 72% - Absences: 42 - Tardies: 13 - -Behavioral incidents: - 2/2015/2016 - Disorderly Conduct - Hallway - During transition between classes, Chip was running and jumping through the halls and yelling for several minutes. Teaching staff intervened to ask him to stop but he refused repeatedly. He continued engaging in the behavior after the transition period ended, and then went to class 5 minutes late. - - 1/20/2015 - Disorderly Conduct - Playground - Chip refused to engage in academic work in science class. Staff asked him to get his book, be he refused and made a negative comment. He then started making disruptive noises with his phone, so the teacher asked for his phone. He refused to give the phone, and the teacher referred him to redirect. - -Academic assessments: - 5/8/2015 - MCAS Math - 3rd percentile - 5/2/2015 - MCAS ELA - 7th percentile - 5/4/2014 - STAR Math - 42nd percentile - 5/13/2014 - STAR Reading - 13th percentile - -Additional notes: - 11/03/2015 - Amendment added to IEP to include counseling services - 10/28/2015 - Meeting scheduled to reconvene the team to discuss Chip's social emotional - needs, and whether he could benefit from counseling. May lead to amending his IEP. - 10/03/2015 - Academic engagement is not improving. Starting behavior plan and work - completion plan, focused on science first. \ No newline at end of file diff --git a/spec/controllers/service_uploads_controller_spec.rb b/spec/controllers/service_uploads_controller_spec.rb index eb64acc67e..924229d24e 100644 --- a/spec/controllers/service_uploads_controller_spec.rb +++ b/spec/controllers/service_uploads_controller_spec.rb @@ -240,7 +240,7 @@ def make_request let(:educator) { FactoryBot.create(:educator, can_set_districtwide_access: true) } let!(:service_upload) { - ServiceUpload.create!(file_name: 'helpful-service.txt', uploaded_by_educator: educator) + ServiceUpload.create!(file_name: 'helpful-service.csv', uploaded_by_educator: educator) } let(:response_body) { JSON.parse(response.body) } @@ -249,14 +249,14 @@ def make_request make_request expect(response_body.class).to eq Array expect(response_body.size).to eq 1 - expect(response_body[0]['file_name']).to eq 'helpful-service.txt' + expect(response_body[0]['file_name']).to eq 'helpful-service.csv' end end context 'educator w/o access' do let(:educator) { FactoryBot.create(:educator) } let!(:service_upload) { - ServiceUpload.create!(file_name: 'helpful-service.txt', uploaded_by_educator: educator) + ServiceUpload.create!(file_name: 'helpful-service.csv', uploaded_by_educator: educator) } it 'guards access' do diff --git a/spec/fixtures/educator_section_assignment_export.txt b/spec/fixtures/educator_section_assignment_export.csv similarity index 100% rename from spec/fixtures/educator_section_assignment_export.txt rename to spec/fixtures/educator_section_assignment_export.csv diff --git a/spec/fixtures/fake_behavior_export.txt b/spec/fixtures/fake_behavior_export.csv similarity index 100% rename from spec/fixtures/fake_behavior_export.txt rename to spec/fixtures/fake_behavior_export.csv diff --git a/spec/fixtures/fake_students_export.txt b/spec/fixtures/fake_students_export.csv similarity index 100% rename from spec/fixtures/fake_students_export.txt rename to spec/fixtures/fake_students_export.csv diff --git a/spec/fixtures/student_section_assignment_export_with_district_school_year_token.txt b/spec/fixtures/student_section_assignment_export_with_district_school_year_token.csv similarity index 100% rename from spec/fixtures/student_section_assignment_export_with_district_school_year_token.txt rename to spec/fixtures/student_section_assignment_export_with_district_school_year_token.csv diff --git a/spec/fixtures/student_section_assignment_export_without_district_school_year.txt b/spec/fixtures/student_section_assignment_export_without_district_school_year.csv similarity index 100% rename from spec/fixtures/student_section_assignment_export_without_district_school_year.txt rename to spec/fixtures/student_section_assignment_export_without_district_school_year.csv diff --git a/spec/importers/data_transformers/streaming_csv_transformer_spec.rb b/spec/importers/data_transformers/streaming_csv_transformer_spec.rb index 564ce170d4..df3a6e78b6 100644 --- a/spec/importers/data_transformers/streaming_csv_transformer_spec.rb +++ b/spec/importers/data_transformers/streaming_csv_transformer_spec.rb @@ -4,7 +4,7 @@ describe '#transform' do context 'tracks total and processed rows' do - let!(:csv_string) { File.read("#{Rails.root}/spec/fixtures/fake_behavior_export.txt") } + let!(:csv_string) { File.read("#{Rails.root}/spec/fixtures/fake_behavior_export.csv") } let(:transformer) { StreamingCsvTransformer.new(LogHelper::FakeLog.new) } let(:output) { transformer.transform(csv_string) } @@ -25,7 +25,7 @@ end context 'headers in csv' do - let!(:csv_string) { File.read("#{Rails.root}/spec/fixtures/fake_behavior_export.txt") } + let!(:csv_string) { File.read("#{Rails.root}/spec/fixtures/fake_behavior_export.csv") } let(:transformer) { StreamingCsvTransformer.new(LogHelper::FakeLog.new) } let(:output) { transformer.transform(csv_string) } diff --git a/spec/importers/file_importers/behavior_importer_spec.rb b/spec/importers/file_importers/behavior_importer_spec.rb index 0adb3cfd4d..8954f05fcc 100644 --- a/spec/importers/file_importers/behavior_importer_spec.rb +++ b/spec/importers/file_importers/behavior_importer_spec.rb @@ -146,7 +146,7 @@ def create_behavior_importer(options = {}) describe '#import' do let!(:pals) { TestPals.create! } - let(:csv_string) { File.read("#{Rails.root}/spec/fixtures/fake_behavior_export.txt") } + let(:csv_string) { File.read("#{Rails.root}/spec/fixtures/fake_behavior_export.csv") } let(:transformer) { StreamingCsvTransformer.new(LogHelper::FakeLog.new) } let(:output) { transformer.transform(csv_string) } @@ -188,7 +188,7 @@ def create_behavior_importer(options = {}) let(:student) { FactoryBot.create(:student, school: hea) } let!(:discipline_incident) { FactoryBot.create(:discipline_incident, student: student) } let(:discipline_incident_id) { discipline_incident.id } - let!(:school_scope) { ['SHS'] } # All students in fake_behavior_export.txt are SHS + let!(:school_scope) { ['SHS'] } # All students in fake_behavior_export.csv are SHS it 'creates three new rows, destroys zero' do expect { create_behavior_importer(school_scope: school_scope).import }.to change { DisciplineIncident.count }.by 3 diff --git a/spec/importers/file_importers/courses_sections_importer_spec.rb b/spec/importers/file_importers/courses_sections_importer_spec.rb index 4976c43fe5..23d009f12f 100644 --- a/spec/importers/file_importers/courses_sections_importer_spec.rb +++ b/spec/importers/file_importers/courses_sections_importer_spec.rb @@ -73,7 +73,7 @@ def create_importer_with_mocked_file_text(file_text, options = {}) let(:courses_sections_importer) { described_class.new(options: { school_scope: nil, - log: LogHelper::Redirect.instance.file + log: LogHelper::FakeLog.new }) } diff --git a/spec/importers/file_importers/ed_plan_accommodations_importer_spec.rb b/spec/importers/file_importers/ed_plan_accommodations_importer_spec.rb index 9524be6b54..5db8e24a0e 100644 --- a/spec/importers/file_importers/ed_plan_accommodations_importer_spec.rb +++ b/spec/importers/file_importers/ed_plan_accommodations_importer_spec.rb @@ -20,8 +20,8 @@ def create_importer(options = {}) def mock_importer_download!(importer) mock_per_district = PerDistrict.new allow(PerDistrict).to receive(:new).and_return(mock_per_district) - allow(mock_per_district).to receive(:try_sftp_filename).with('FILENAME_FOR_ED_PLAN_ACCOMMODATIONS_IMPORT').and_return('test.txt') - allow(importer).to receive(:download_csv_file_text).with('test.txt').and_return(fixture_file_text) + allow(mock_per_district).to receive(:try_sftp_filename).with('FILENAME_FOR_ED_PLAN_ACCOMMODATIONS_IMPORT').and_return('test.csv') + allow(importer).to receive(:download_csv_file_text).with('test.csv').and_return(fixture_file_text) end describe 'integration test' do diff --git a/spec/importers/file_importers/ed_plans_importer_spec.rb b/spec/importers/file_importers/ed_plans_importer_spec.rb index bc28744c57..583b6f6925 100644 --- a/spec/importers/file_importers/ed_plans_importer_spec.rb +++ b/spec/importers/file_importers/ed_plans_importer_spec.rb @@ -20,8 +20,8 @@ def create_importer(options = {}) def mock_importer_download!(importer) mock_per_district = PerDistrict.new allow(PerDistrict).to receive(:new).and_return(mock_per_district) - allow(mock_per_district).to receive(:try_sftp_filename).with('FILENAME_FOR_ED_PLAN_IMPORT').and_return('test_filename_for_ed_plan_import.txt') - allow(importer).to receive(:download_csv_file_text).with('test_filename_for_ed_plan_import.txt').and_return(fixture_file_text) + allow(mock_per_district).to receive(:try_sftp_filename).with('FILENAME_FOR_ED_PLAN_IMPORT').and_return('test_filename_for_ed_plan_import.csv') + allow(importer).to receive(:download_csv_file_text).with('test_filename_for_ed_plan_import.csv').and_return(fixture_file_text) end describe 'integration test' do diff --git a/spec/importers/file_importers/educator_section_assignments_importer_spec.rb b/spec/importers/file_importers/educator_section_assignments_importer_spec.rb index c8b9806e15..4b5f17105e 100644 --- a/spec/importers/file_importers/educator_section_assignments_importer_spec.rb +++ b/spec/importers/file_importers/educator_section_assignments_importer_spec.rb @@ -27,7 +27,7 @@ def test_district_school_year end def make_importer_with_fixture(district_school_year) - fixture_file = "#{Rails.root}/spec/fixtures/educator_section_assignment_export.txt" + fixture_file = "#{Rails.root}/spec/fixtures/educator_section_assignment_export.csv" file = File.read(fixture_file) file_with_school_year = file.gsub('', district_school_year.to_s) transformer = StreamingCsvTransformer.new(LogHelper::FakeLog.new) diff --git a/spec/importers/file_importers/student_section_assignments_importer_spec.rb b/spec/importers/file_importers/student_section_assignments_importer_spec.rb index c468090262..a25aca79ba 100644 --- a/spec/importers/file_importers/student_section_assignments_importer_spec.rb +++ b/spec/importers/file_importers/student_section_assignments_importer_spec.rb @@ -20,12 +20,12 @@ def mock_importer_with_csv(importer, csv) end def fixture_without_years - filename = "#{Rails.root}/spec/fixtures/student_section_assignment_export_without_district_school_year.txt" + filename = "#{Rails.root}/spec/fixtures/student_section_assignment_export_without_district_school_year.csv" test_csv_from_file(filename) end def fixture_for_district_school_year(district_school_year) - filename = "#{Rails.root}/spec/fixtures/student_section_assignment_export_with_district_school_year_token.txt" + filename = "#{Rails.root}/spec/fixtures/student_section_assignment_export_with_district_school_year_token.csv" file = File.read(filename) file_with_school_year = file.gsub('', district_school_year.to_s) diff --git a/spec/importers/file_importers/students_importer_spec.rb b/spec/importers/file_importers/students_importer_spec.rb index 0e20d4cc18..d71b013178 100644 --- a/spec/importers/file_importers/students_importer_spec.rb +++ b/spec/importers/file_importers/students_importer_spec.rb @@ -34,7 +34,7 @@ def test_row_from_fixture(options = {}) end def fixture_filename - "#{Rails.root}/spec/fixtures/fake_students_export.txt" + "#{Rails.root}/spec/fixtures/fake_students_export.csv" end describe '#import integration tests' do diff --git a/spec/importers/helpers/csv_downloader_spec.rb b/spec/importers/helpers/csv_downloader_spec.rb index dd3cb09856..fbe2b5fc1b 100644 --- a/spec/importers/helpers/csv_downloader_spec.rb +++ b/spec/importers/helpers/csv_downloader_spec.rb @@ -7,12 +7,12 @@ csv_downloader = CsvDownloader.new({ log: log, client: SftpClient.for_x2, - remote_file_name: '/pathway/secret/filename.txt', + remote_file_name: '/pathway/secret/filename.csv', transformer: transformer }) allow(csv_downloader).to receive(:download_file).and_return 'foo-file-contents' expect(csv_downloader.get_data).to eq transformer - expect(log.output).to include("Downloading remote basename 'filename.txt'...") + expect(log.output).to include("Downloading remote basename 'filename.csv'...") end end diff --git a/spec/support/log_redirect_helper.rb b/spec/support/log_redirect_helper.rb index f18a990f23..35b85dc690 100644 --- a/spec/support/log_redirect_helper.rb +++ b/spec/support/log_redirect_helper.rb @@ -1,23 +1,4 @@ module LogHelper - class Redirect - include Singleton - - attr_reader :file - - def log_directory - "#{Rails.root}/spec/logs" - end - - def log_path - "#{log_directory}/logs.txt" - end - - def initialize - Dir.mkdir(log_directory) unless File.exist?(log_directory) - @file = File.new(log_path, 'w') - end - end - # STDOUT class FakeLog attr_reader :msgs @@ -34,6 +15,10 @@ def output @msgs.join("\n") end + def flush + nil + end + def clear! @msgs = [] end diff --git a/x2_export/xml/StudentInsightassessmentdef.txt b/x2_export/xml/StudentInsightassessmentdef.xml similarity index 100% rename from x2_export/xml/StudentInsightassessmentdef.txt rename to x2_export/xml/StudentInsightassessmentdef.xml diff --git a/x2_export/xml/StudentInsightattendancedef.txt b/x2_export/xml/StudentInsightattendancedef.xml similarity index 100% rename from x2_export/xml/StudentInsightattendancedef.txt rename to x2_export/xml/StudentInsightattendancedef.xml diff --git a/x2_export/xml/StudentInsightconductdef.txt b/x2_export/xml/StudentInsightconductdef.xml similarity index 100% rename from x2_export/xml/StudentInsightconductdef.txt rename to x2_export/xml/StudentInsightconductdef.xml diff --git a/x2_export/xml/StudentInsightstaffdef.txt b/x2_export/xml/StudentInsightstaffdef.xml similarity index 100% rename from x2_export/xml/StudentInsightstaffdef.txt rename to x2_export/xml/StudentInsightstaffdef.xml diff --git a/x2_export/xml/StudentInsightstudentdef.txt b/x2_export/xml/StudentInsightstudentdef.xml similarity index 100% rename from x2_export/xml/StudentInsightstudentdef.txt rename to x2_export/xml/StudentInsightstudentdef.xml