From 6a24d4fa23532955c42e82f3dedc2cdea5566779 Mon Sep 17 00:00:00 2001 From: Nelson Jovel Date: Tue, 12 Dec 2023 10:53:07 -0800 Subject: [PATCH] chore: Make sure 'hispanic' column only gets applied when using SIS race information --- app/services/survey_item_values.rb | 17 +++++++++++------ spec/services/survey_item_values_spec.rb | 3 ++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/app/services/survey_item_values.rb b/app/services/survey_item_values.rb index f00a2369..c60e0a87 100644 --- a/app/services/survey_item_values.rb +++ b/app/services/survey_item_values.rb @@ -128,13 +128,12 @@ class SurveyItemValues def races @races ||= begin - hispanic = value_from(pattern: /Hispanic\s*Latino/i)&.downcase - race_codes ||= value_from(pattern: /Race\s*self\s*report/i) + race_codes ||= self_report = value_from(pattern: /Race\s*self\s*report/i) race_codes ||= value_from(pattern: /^RACE$/i) race_codes ||= value_from(pattern: %r{What is your race/ethnicity?(Please select all that apply) - Selected Choice}i) race_codes ||= value_from(pattern: /Race Secondary/i) - race_codes ||= value_from(pattern: /Race-\s*SIS/i) - race_codes ||= value_from(pattern: /Race\s*-\s*Qcodes/i) + race_codes ||= sis ||= value_from(pattern: /Race-\s*SIS/i) + race_codes ||= sis ||= value_from(pattern: /Race\s*-\s*Qcodes/i) race_codes ||= value_from(pattern: /RACE/i) || "" race_codes ||= [] race_codes = race_codes.split(",") @@ -143,8 +142,14 @@ class SurveyItemValues end.flatten .reject(&:blank?) .map { |race| Race.qualtrics_code_from(race) }.map(&:to_i) - race_codes = race_codes.reject { |code| code == 5 } if hispanic == "true" && race_codes.count == 1 - race_codes = race_codes.push(4) if hispanic == "true" + + # Only check the secondary hispanic column if we don't have self reported data and are relying on SIS data + if self_report.nil? && sis.present? + hispanic = value_from(pattern: /Hispanic\s*Latino/i)&.downcase + race_codes = race_codes.reject { |code| code == 5 } if hispanic == "true" && race_codes.count == 1 + race_codes = race_codes.push(4) if hispanic == "true" + end + process_races(codes: race_codes) end end diff --git a/spec/services/survey_item_values_spec.rb b/spec/services/survey_item_values_spec.rb index c2878405..695c6ad4 100644 --- a/spec/services/survey_item_values_spec.rb +++ b/spec/services/survey_item_values_spec.rb @@ -415,8 +415,9 @@ RSpec.describe SurveyItemValues, type: :model do values = SurveyItemValues.new(row:, headers:, genders:, survey_items:, schools:) expect(values.races.map { |race| race&.qualtrics_code }).to eq [5, 2, 3, 100] - row = { "Race" => "Caucasian and Asian and African American", "HispanicLatino" => "true" } + row = { "Race- SIS" => "Caucasian and Asian and African American", "HispanicLatino" => "true" } headers.push("HispanicLatino") + headers.push("Race- SIS") values = SurveyItemValues.new(row:, headers:, genders:, survey_items:, schools:) expect(values.races.map { |race| race&.qualtrics_code }).to eq [5, 2, 3, 4, 100] end