chore: Make sure 'hispanic' column only gets applied when using SIS race information

rpp-main
Nelson Jovel 2 years ago
parent f28713d1fe
commit 6a24d4fa23

@ -128,13 +128,12 @@ class SurveyItemValues
def races def races
@races ||= begin @races ||= begin
hispanic = value_from(pattern: /Hispanic\s*Latino/i)&.downcase race_codes ||= self_report = value_from(pattern: /Race\s*self\s*report/i)
race_codes ||= value_from(pattern: /Race\s*self\s*report/i)
race_codes ||= value_from(pattern: /^RACE$/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: %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 Secondary/i)
race_codes ||= value_from(pattern: /Race-\s*SIS/i) race_codes ||= sis ||= 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*-\s*Qcodes/i)
race_codes ||= value_from(pattern: /RACE/i) || "" race_codes ||= value_from(pattern: /RACE/i) || ""
race_codes ||= [] race_codes ||= []
race_codes = race_codes.split(",") race_codes = race_codes.split(",")
@ -143,8 +142,14 @@ class SurveyItemValues
end.flatten end.flatten
.reject(&:blank?) .reject(&:blank?)
.map { |race| Race.qualtrics_code_from(race) }.map(&:to_i) .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) process_races(codes: race_codes)
end end
end end

@ -415,8 +415,9 @@ RSpec.describe SurveyItemValues, type: :model do
values = SurveyItemValues.new(row:, headers:, genders:, survey_items:, schools:) values = SurveyItemValues.new(row:, headers:, genders:, survey_items:, schools:)
expect(values.races.map { |race| race&.qualtrics_code }).to eq [5, 2, 3, 100] 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("HispanicLatino")
headers.push("Race- SIS")
values = SurveyItemValues.new(row:, headers:, genders:, survey_items:, schools:) values = SurveyItemValues.new(row:, headers:, genders:, survey_items:, schools:)
expect(values.races.map { |race| race&.qualtrics_code }).to eq [5, 2, 3, 4, 100] expect(values.races.map { |race| race&.qualtrics_code }).to eq [5, 2, 3, 4, 100]
end end

Loading…
Cancel
Save