From 3ecc68edd0edac670d36a7d19e26b2c645d499a9 Mon Sep 17 00:00:00 2001 From: Nelson Jovel Date: Wed, 26 Jun 2024 12:02:22 -0700 Subject: [PATCH] chore: correct parsing for 'not sped' and 'lep not first year' --- app/models/ell.rb | 2 +- app/models/sped.rb | 4 +- app/models/subcategory.rb | 1 - .../graph/column/GenderColumn/unknown_spec.rb | 77 +++++++++++++++++++ spec/services/survey_item_values_spec.rb | 11 +++ 5 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 spec/models/analyze/graph/column/GenderColumn/unknown_spec.rb diff --git a/app/models/ell.rb b/app/models/ell.rb index 018d5df7..4cf578fd 100644 --- a/app/models/ell.rb +++ b/app/models/ell.rb @@ -9,7 +9,7 @@ class Ell < ApplicationRecord ell = ell.delete(",") case ell - in /lep\s*student\s*1st\s*year|LEP\s*student\s*not\s*1st\s*year|EL\s*Student\s*First\s*Year|LEP\s*student|^EL\s+|true|1|^ELL$/i + in /lep\s*student\s*1st\s*year|LEP\s*student\s*not\s*1st\s*year|EL\s*Student\s*First\s*Year|LEP\s*student|^EL\s+|true|1|^ELL$|^LEP\s*Not\s*1st\s*Year/i "ELL" in /0|2|3|Does\s*not\s*apply/i "Not ELL" diff --git a/app/models/sped.rb b/app/models/sped.rb index 01fe0bfa..b132aeb9 100644 --- a/app/models/sped.rb +++ b/app/models/sped.rb @@ -10,9 +10,9 @@ class Sped < ApplicationRecord case sped in /active|^A$|1|^Special\s*Education$/i "Special Education" - in /^I$|exited|0|^Not\s*Special\s*Education$|Does\s*not\s*apply|Referred|Ineligible|^No\s*special\s*needs$/i + in /^I$|exited|0|^Not\s*Special\s*Education$|Does\s*not\s*apply|Referred|Ineligible|^No\s*special\s*needs$|Not\s*SPED/i "Not Special Education" - in %r{^#*N/*A$|Unknown|SpecialEdStatus|SPED}i + in %r{^#*N/*A$|^Unknown|^SpecialEdStatus|^SPED}i "Unknown" else puts "************************************" diff --git a/app/models/subcategory.rb b/app/models/subcategory.rb index d0582888..e245e520 100644 --- a/app/models/subcategory.rb +++ b/app/models/subcategory.rb @@ -41,7 +41,6 @@ class Subcategory < ActiveRecord::Base teacher_response_rate: teacher.rate, meets_student_threshold: student.meets_student_threshold?, meets_teacher_threshold: teacher.meets_teacher_threshold?) end - @response_rate[[school, academic_year]] end diff --git a/spec/models/analyze/graph/column/GenderColumn/unknown_spec.rb b/spec/models/analyze/graph/column/GenderColumn/unknown_spec.rb new file mode 100644 index 00000000..0877c603 --- /dev/null +++ b/spec/models/analyze/graph/column/GenderColumn/unknown_spec.rb @@ -0,0 +1,77 @@ +require "rails_helper" + +RSpec.describe Analyze::Graph::Column::GenderColumn::Unknown, type: :model do + let(:school) { create(:school) } + let(:academic_year) { create(:academic_year) } + let(:measure) { create(:measure) } + let(:academic_years) { [academic_year] } + let(:position) { 0 } + let(:number_of_columns) { 1 } + let(:gender) { create(:gender, qualtrics_code: 99) } + + let(:subcategory) { create(:subcategory, subcategory_id: "1A") } + let(:measure) { create(:measure, measure_id: "1A-iii", subcategory:) } + let(:scale) { create(:student_scale, measure:) } + let(:survey_item) { create(:student_survey_item, scale:) } + let(:teacher_scale) { create(:teacher_scale, measure:) } + let(:teacher_survey_item) { create(:teacher_survey_item, scale:) } + + context "when no teacher responses exist" do + context "when there are insufficient unknown students" do + it "reports a score of 3 when the average is 3" do + expect(Analyze::Graph::Column::GenderColumn::Unknown.new(school:, academic_years:, position:, measure:, + number_of_columns:).score(academic_year).average).to eq(nil) + end + it "reports insufficient data" do + expect(Analyze::Graph::Column::GenderColumn::Unknown.new(school:, academic_years:, position:, measure:, + number_of_columns:).sufficient_student_responses?(academic_year:)).to eq(false) + end + end + context "when there are sufficient unknown students" do + before :each do + create_list(:survey_item_response, 10, school:, academic_year:, gender:, survey_item:) + end + it "reports a score of 3 when the average is 3" do + expect(Analyze::Graph::Column::GenderColumn::Unknown.new(school:, academic_years:, position:, measure:, + number_of_columns:).score(academic_year).average).to eq(3) + end + + it "reports sufficient data" do + expect(Analyze::Graph::Column::GenderColumn::Unknown.new(school:, academic_years:, position:, measure:, + number_of_columns:).sufficient_student_responses?(academic_year:)).to eq(true) + end + end + end + + context "when teacher responses exist" do + before :each do + create_list(:survey_item_response, 10, school:, academic_year:, survey_item: teacher_survey_item, likert_score: 5) + end + + context "when there are insufficient unknown students" do + it "reports a score of 3 when the average is 3" do + expect(Analyze::Graph::Column::GenderColumn::Unknown.new(school:, academic_years:, position:, measure:, + number_of_columns:).score(academic_year).average).to eq(nil) + end + it "reports insufficient data" do + expect(Analyze::Graph::Column::GenderColumn::Unknown.new(school:, academic_years:, position:, measure:, + number_of_columns:).sufficient_student_responses?(academic_year:)).to eq(false) + end + end + context "when there are sufficient unknown students" do + before :each do + create_list(:survey_item_response, 10, school:, academic_year:, gender:, survey_item:) + end + it "reports a score of 3 when the average is 3" do + expect(Analyze::Graph::Column::GenderColumn::Unknown.new(school:, academic_years:, position:, measure:, + number_of_columns:).score(academic_year).average).to eq(3) + end + + it "reports sufficient data" do + expect(Analyze::Graph::Column::GenderColumn::Unknown.new(school:, academic_years:, position:, measure:, + number_of_columns:).sufficient_student_responses?(academic_year:)).to eq(true) + end + end + end +end + diff --git a/spec/services/survey_item_values_spec.rb b/spec/services/survey_item_values_spec.rb index 0bbdbe64..7e70d462 100644 --- a/spec/services/survey_item_values_spec.rb +++ b/spec/services/survey_item_values_spec.rb @@ -579,6 +579,10 @@ RSpec.describe SurveyItemValues, type: :model do row = { "Raw ELL" => "EL - Early Child. or PK" } values = SurveyItemValues.new(row:, headers:, survey_items:, schools:) expect(values.ell).to eq "ELL" + + row = { "Raw ELL" => "LEP Not 1st Year" } + values = SurveyItemValues.new(row:, headers:, survey_items:, schools:) + expect(values.ell).to eq "ELL" end it 'translates "Does not Apply" into "Not ELL"' do @@ -680,6 +684,13 @@ RSpec.describe SurveyItemValues, type: :model do expect(values.sped).to eq "Not Special Education" end + it 'translates "not sped" into "Not Special Education' do + headers = ["Raw SpEd"] + row = { "Raw SpEd" => "Not SPED" } + values = SurveyItemValues.new(row:, headers:, survey_items:, schools:, academic_years:) + expect(values.sped).to eq "Not Special Education" + end + it 'translates NA into "Unknown"' do headers = ["Raw SpEd"] row = { "Raw SpEd" => "NA" }