mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 21:48:16 -08:00
add disaggregation glossary
This commit is contained in:
parent
63b4c4762a
commit
ea2feb138b
9 changed files with 160 additions and 104 deletions
|
|
@ -5,14 +5,16 @@ class Ell < ApplicationRecord
|
||||||
|
|
||||||
friendly_id :designation, use: [:slugged]
|
friendly_id :designation, use: [:slugged]
|
||||||
def self.to_designation(ell)
|
def self.to_designation(ell)
|
||||||
return "Not ELL" if ell.blank? || ell.nil?
|
return "Not ELL" if ell.blank?
|
||||||
|
|
||||||
ell = ell.delete(",")
|
ell = ell.delete(",")
|
||||||
case ell
|
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|true/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|true|1/i
|
||||||
"ELL"
|
"ELL"
|
||||||
in /^NA$|^#NA$|^NA|0|Does\s*not\s*apply|Unknown/i
|
in /0|2|3|Does\s*not\s*apply/i
|
||||||
"Not ELL"
|
"Not ELL"
|
||||||
|
in %r{^#*N/*A$|Unknown}i
|
||||||
|
"Unknown"
|
||||||
else
|
else
|
||||||
puts "************************************"
|
puts "************************************"
|
||||||
puts "******** ERROR **********"
|
puts "******** ERROR **********"
|
||||||
|
|
|
||||||
|
|
@ -4,19 +4,21 @@ class Gender < ApplicationRecord
|
||||||
}
|
}
|
||||||
|
|
||||||
def self.qualtrics_code_from(word)
|
def self.qualtrics_code_from(word)
|
||||||
|
return 99 if word.blank?
|
||||||
|
|
||||||
case word
|
case word
|
||||||
when /Female|^F|1/i
|
when /Female|^F$|1/i
|
||||||
1
|
1
|
||||||
when /Male|^M|2/i
|
when /Male|^M$|2/i
|
||||||
2
|
2
|
||||||
when /Another\s*Gender|Gender Identity not listed above|3|7/i
|
when /Another\s*Gender|Gender Identity not listed above|3|7/i
|
||||||
4 # We categorize any self reported gender as non-binary
|
4 # We categorize any self reported gender as non-binary
|
||||||
when /Non-Binary|^N|4/i
|
when /Non-Binary|^N$|4/i
|
||||||
4
|
4
|
||||||
when /Prefer not to disclose|6/i
|
when /Prefer not to disclose|6/i
|
||||||
99
|
99
|
||||||
when %r{^#*N/*A$}i
|
when %r{^#*N/*A$}i
|
||||||
nil
|
99
|
||||||
else
|
else
|
||||||
99
|
99
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ class Race < ApplicationRecord
|
||||||
}
|
}
|
||||||
|
|
||||||
def self.qualtrics_code_from(word)
|
def self.qualtrics_code_from(word)
|
||||||
|
return nil if word.blank?
|
||||||
|
|
||||||
case word
|
case word
|
||||||
when /Native\s*American|American\s*Indian|Alaskan\s*Native|1/i
|
when /Native\s*American|American\s*Indian|Alaskan\s*Native|1/i
|
||||||
1
|
1
|
||||||
|
|
@ -33,17 +35,16 @@ class Race < ApplicationRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.normalize_race_list(codes)
|
def self.normalize_race_list(codes)
|
||||||
# if anyone selects not to disclose their race or prefers to self-describe, categorize that as unknown race
|
# if anyone selects not to disclose their race or prefers to self-describe, categorize that as unknown race
|
||||||
races = codes.map do |code|
|
races = codes.map do |code|
|
||||||
code = 99 if [6, 7].include?(code) || code.nil? || code.zero?
|
code = 99 if [6, 7].include?(code) || code.nil? || code.zero?
|
||||||
code
|
code
|
||||||
end.uniq
|
end.uniq
|
||||||
|
|
||||||
races.delete(99) if races.length > 1 #remove unkown race if other races present
|
races.delete(99) if races.length > 1 # remove unkown race if other races present
|
||||||
races << 100 if races.length > 1 # add multiracial designation if multiple races present
|
races << 100 if races.length > 1 # add multiracial designation if multiple races present
|
||||||
races << 99 if races.length == 0 # add unknown race if other races missing
|
races << 99 if races.length == 0 # add unknown race if other races missing
|
||||||
races
|
races
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,14 @@ class Sped < ApplicationRecord
|
||||||
|
|
||||||
friendly_id :designation, use: [:slugged]
|
friendly_id :designation, use: [:slugged]
|
||||||
def self.to_designation(sped)
|
def self.to_designation(sped)
|
||||||
return "Not Special Education" if sped.blank? || sped.nil?
|
return "Not Special Education" if sped.blank?
|
||||||
|
|
||||||
case sped
|
case sped
|
||||||
in /active|^A$|1|Special\s*Education/i
|
in /active|^A$|1|^Special\s*Education$/i
|
||||||
"Special Education"
|
"Special Education"
|
||||||
in /^I$|exited|0|Not\s*Special\s*Education|Does\s*not\s*apply/i
|
in /^I$|exited|0|^Not\s*Special\s*Education$|Does\s*not\s*apply/i
|
||||||
"Not Special Education"
|
"Not Special Education"
|
||||||
in /^NA$|^#NA$|Unknown/i
|
in %r{^#*N/*A$|Unknown}i
|
||||||
"Unknown"
|
"Unknown"
|
||||||
else
|
else
|
||||||
puts "************************************"
|
puts "************************************"
|
||||||
|
|
|
||||||
|
|
@ -147,17 +147,17 @@ class SurveyItemValues
|
||||||
race_codes ||= []
|
race_codes ||= []
|
||||||
|
|
||||||
race_codes = race_codes.split(",")
|
race_codes = race_codes.split(",")
|
||||||
.map do |word|
|
.map { |word| word.split(/\s+and\s+/i) }
|
||||||
word.split(/\s+and\s+/i)
|
.flatten
|
||||||
end.flatten
|
.reject(&:blank?)
|
||||||
.reject(&:blank?)
|
.map { |race| Race.qualtrics_code_from(race) }
|
||||||
.map { |race| Race.qualtrics_code_from(race) }.map(&:to_i)
|
.map(&:to_i)
|
||||||
|
|
||||||
# Only check the secondary hispanic column if we don't have self reported data and are relying on SIS data
|
# 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?
|
if self_report.nil? && sis.present?
|
||||||
hispanic = value_from(pattern: /Hispanic\s*Latino/i)&.downcase
|
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.reject { |code| code == 5 } if hispanic == "true" && race_codes.count == 1
|
||||||
race_codes = race_codes.push(4) if hispanic == "true"
|
race_codes = race_codes.push(4) if hispanic == "true" || hispanic == "1"
|
||||||
end
|
end
|
||||||
|
|
||||||
Race.normalize_race_list(race_codes)
|
Race.normalize_race_list(race_codes)
|
||||||
|
|
@ -202,8 +202,6 @@ class SurveyItemValues
|
||||||
output ||= row[match]&.strip
|
output ||= row[match]&.strip
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil if output&.match?(%r{^#*N/*A$}i) || output.blank?
|
|
||||||
|
|
||||||
output
|
output
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
21
spec/fixtures/demographic_glossary.csv
vendored
Normal file
21
spec/fixtures/demographic_glossary.csv
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
ELL Value,ELL Type,ELL Headers,Sped Value,Sped Type,Sped Headers,Income Value,Income Type,Income Headers
|
||||||
|
EL student not 1st year,ELL,EL Student First Year,A,Special Education,Special Ed Status,Free Lunch,Economically Disadvantaged – Y,Low Income
|
||||||
|
"EL student, not 1st year",ELL,Raw ELL,active,Special Education,Raw SPED,Reduced Lunch,Economically Disadvantaged – Y,Raw Income
|
||||||
|
EL student 1st year,ELL,ELL- SIS,1,Special Education,SPED- SIS,LowIncome,Economically Disadvantaged – Y,SES- SIS
|
||||||
|
"EL student, 1st year",ELL,DirectCert,Special Education,Special Education,SPED,Low Income,Economically Disadvantaged – Y,EconDisadvantaged
|
||||||
|
EL - Early Child. or PK,ELL,,Referred,Special Education,,Reduced price lunch,Economically Disadvantaged – Y,Income SIS
|
||||||
|
1,ELL,,Ineligible,Not Special Education,,TRUE,Economically Disadvantaged – Y,
|
||||||
|
lep student 1st year,ELL,,I,Not Special Education,,1,Economically Disadvantaged – Y,
|
||||||
|
lep student not 1st year,ELL,,exited,Not Special Education,,Not Eligible,Economically Disadvantaged – N,
|
||||||
|
LEP Not1stYr,ELL,,0,Not Special Education,,FALSE,Economically Disadvantaged – N,
|
||||||
|
LEP1stYr US Sch,ELL,,Not Special Education,Not Special Education,,0,Economically Disadvantaged – N,
|
||||||
|
"Does not apply
|
||||||
|
",Not ELL,,Does not apply,Not Special Education,,[blanks],Unknown,
|
||||||
|
0,Not ELL,,[blanks],Not Special Education,,#NA,Unknown,
|
||||||
|
2,Not ELL,,#NA,Unknown,,NA,Unknown,
|
||||||
|
3,Not ELL,,NA,Unknown,,N/A,Unknown,
|
||||||
|
[blanks],Not ELL,,N/A,Unknown,,#N/A,Unknown,
|
||||||
|
#NA,Unknown,,#N/A,Unknown,,,,
|
||||||
|
NA,Unknown,,,,,,,
|
||||||
|
N/A,Unknown,,,,,,,
|
||||||
|
#N/A,Unknown,,,,,,,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Start Date,End Date,Response Type,IP Address,Progress,Duration (in seconds),Finished,RecordedDate,ResponseId,LASID,Recipient Last Name,Recipient First Name,Recipient Email,External Data Reference,Location Latitude,Location Longitude,Distribution Channel,User Language,district,school,DESE ID,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,s-emsa-q1,s-emsa-q2,s-emsa-q3,s-tint-q1,s-tint-q2,#N/A,s-tint-q4,s-tint-q5,s-acpr-q1,s-acpr-q2,s-acpr-q3,s-acpr-q4,#N/A,#N/A,s-cure-q3,s-cure-q4,#N/A,s-sten-q2,s-sten-q3,s-sper-q1,s-sper-q2,s-sper-q3,s-sper-q4,s-civp-q1,s-civp-q2,s-civp-q3,s-civp-q4,s-grmi-q1,#N/A,#N/A,s-grmi-q4,s-appa-q1,s-appa-q2,#N/A,s-peff-q1,s-peff-q2,s-peff-q3,s-peff-q4,s-peff-q5,s-peff-q6,s-sbel-q1,s-sbel-q2,s-sbel-q3,s-sbel-q4,s-sbel-q5,s-phys-q1,s-phys-q1-1,s-phys-q2,s-phys-q3,s-phys-q4,s-vale-q1,s-vale-q2,s-vale-q3,s-vale-q4,s-acst-q1,s-acst-q2,s-acst-q3,s-acst-q4,s-acst-q5,s-grit-q1,s-grit-q2,s-grit-q3,s-grit-q4,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,race,What is your race/ethnicity?(Please select all that apply) - Selected Choice,grade,gender,Raw Income,Income,Raw ELL,ELL,Raw SpEd
|
Start Date,End Date,Response Type,IP Address,Progress,Duration (in seconds),Finished,RecordedDate,ResponseId,LASID,Recipient Last Name,Recipient First Name,Recipient Email,External Data Reference,Location Latitude,Location Longitude,Distribution Channel,User Language,district,school,DESE ID,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,s-emsa-q1,s-emsa-q2,s-emsa-q3,s-tint-q1,s-tint-q2,#N/A,s-tint-q4,s-tint-q5,s-acpr-q1,s-acpr-q2,s-acpr-q3,s-acpr-q4,#N/A,#N/A,s-cure-q3,s-cure-q4,#N/A,s-sten-q2,s-sten-q3,s-sper-q1,s-sper-q2,s-sper-q3,s-sper-q4,s-civp-q1,s-civp-q2,s-civp-q3,s-civp-q4,s-grmi-q1,#N/A,#N/A,s-grmi-q4,s-appa-q1,s-appa-q2,#N/A,s-peff-q1,s-peff-q2,s-peff-q3,s-peff-q4,s-peff-q5,s-peff-q6,s-sbel-q1,s-sbel-q2,s-sbel-q3,s-sbel-q4,s-sbel-q5,s-phys-q1,s-phys-q1-1,s-phys-q2,s-phys-q3,s-phys-q4,s-vale-q1,s-vale-q2,s-vale-q3,s-vale-q4,s-acst-q1,s-acst-q2,s-acst-q3,s-acst-q4,s-acst-q5,s-grit-q1,s-grit-q2,s-grit-q3,s-grit-q4,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,race,What is your race/ethnicity?(Please select all that apply) - Selected Choice,grade,gender,Raw Income,Income,Raw ELL,ELL,Raw SpEd
|
||||||
2020-09-29 18:28:41,2020-09-29 18:48:28,0,73.249.89.226,6,1186,0,2020-09-30T18:48:50,student_survey_response_1,123456,,,,,,,anonymous,EN,1,8,1500025,,,,dddd,4,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,0,some non-integer response,6,,,,5,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,EN,,,,,1,888,11th,1,Free Lunch,Economically Disadvantaged – Y,Does not apply,Not ELL,exited
|
2020-09-29 18:28:41,2020-09-29 18:48:28,0,73.249.89.226,6,1186,0,2020-09-30T18:48:50,student_survey_response_1,123456,,,,,,,anonymous,EN,1,8,1500025,,,,dddd,4,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,0,some non-integer response,6,,,,5,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,EN,,,,,1,888,11th,1,Free Lunch,Economically Disadvantaged – Y,Does not apply,Not ELL,exited
|
||||||
2021-02-23 15:12:58,2021-02-23 15:13:17,0,50.207.254.114,0,19,0,2021-02-24T15:13:19,student_survey_response_2,234567,,,,,,,anonymous,EN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,NA,,,,,,,,,,,,,,,,,,,,,EN,,,,,,888,10,,Not Eligible,Economically Disadvantaged – N,,Unknown,Unknown
|
2021-02-23 15:12:58,2021-02-23 15:13:17,0,50.207.254.114,0,19,0,2021-02-24T15:13:19,student_survey_response_2,234567,,,,,,,anonymous,EN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,NA,,,,,,,,,,,,,,,,,,,,,EN,,,,,,888,10,,Not Eligible,Economically Disadvantaged – N,,Not ELL,Unknown
|
||||||
2021-03-31 9:50:19,2021-03-31 9:59:01,0,108.7.17.250,100,522,1,2021-03-31T09:59:02,student_survey_response_3,345678,,,,,42.53340149,-70.96530151,anonymous,EN,3,2,1500505,12,4,108,3300,7,1,,,,,,,,,,,,,,2,4,2,1,4,3,3,,,,,3,3,3,3,,,,,NA,,,,,,,,,3,2,3,3,2,1,3,3,4,1,3,3,4,4,2,4,3,3,4,3,3,3,4,3,3,3,3,3,,,,,,,,,,3,4,4,2,3,3,1,,3,,EN,Math teacher,,,,"2,3,4",888,8,2,Reduced Lunch,Economically Disadvantaged – Y,,Unknown,Unknown
|
2021-03-31 9:50:19,2021-03-31 9:59:01,0,108.7.17.250,100,522,1,2021-03-31T09:59:02,student_survey_response_3,345678,,,,,42.53340149,-70.96530151,anonymous,EN,3,2,1500505,12,4,108,3300,7,1,,,,,,,,,,,,,,2,4,2,1,4,3,3,,,,,3,3,3,3,,,,,NA,,,,,,,,,3,2,3,3,2,1,3,3,4,1,3,3,4,4,2,4,3,3,4,3,3,3,4,3,3,3,3,3,,,,,,,,,,3,4,4,2,3,3,1,,3,,EN,Math teacher,,,,"2,3,4",888,8,2,Reduced Lunch,Economically Disadvantaged – Y,,Not ELL,Unknown
|
||||||
2021-03-31 9:50:09,2021-03-31 10:00:16,0,67.186.188.168,100,607,1,2021-03-31T10:00:17,student_survey_response_4,456789,,,,,42.63510132,-71.30139923,anonymous,EN,3,2,1500505,12,18,108,2064,7,1,,2,2,1,,,,,,,,,,,,,,,,,,,,,,,,,3,5,3,3,,,,,,,,,,4,4,3,4,5,1,,1,5,1,3,2,4,4,1,2,1,3,2,3,3,3,4,2,5,3,4,5,5,3,3,4,3,,,,,4,4,4,4,3,5,2,,2,,EN,,,,English teacher,7,888,8,3,,Unknown,LEP student not 1st year,ELL,active
|
2021-03-31 9:50:09,2021-03-31 10:00:16,0,67.186.188.168,100,607,1,2021-03-31T10:00:17,student_survey_response_4,456789,,,,,42.63510132,-71.30139923,anonymous,EN,3,2,1500505,12,18,108,2064,7,1,,2,2,1,,,,,,,,,,,,,,,,,,,,,,,,,3,5,3,3,,,,,,,,,,4,4,3,4,5,1,,1,5,1,3,2,4,4,1,2,1,3,2,3,3,3,4,2,5,3,4,5,5,3,3,4,3,,,,,4,4,4,4,3,5,2,,2,,EN,,,,English teacher,7,888,8,3,,Unknown,LEP student not 1st year,ELL,active
|
||||||
2021-03-31 9:51:39,2021-03-31 10:01:36,0,73.47.153.77,100,596,1,2021-03-31T10:01:36,student_survey_response_5,567890,,,,,42.65820313,-71.30580139,anonymous,EN,3,2,1500505,6,15,109,3710,7,1,,2,2,2,,,,,,,,,,3,3,4,3,3,3,3,4,3,4,3,4,4,5,4,3,4,3,5,2,2,3,,,,,,,,,,,,1,,2,5,1,3,3,2,4,3,5,4,,,,,,,,,,,,5,4,3,4,4,4,4,4,4,,,,,,,2,,2,,EN,,,Social Studies teacher,,"1,2,3,4,5,8,6,7",888,7,4,Free Lunch,Economically Disadvantaged – Y,EL Student First Year,ELL,active
|
2021-03-31 9:51:39,2021-03-31 10:01:36,0,73.47.153.77,100,596,1,2021-03-31T10:01:36,student_survey_response_5,567890,,,,,42.65820313,-71.30580139,anonymous,EN,3,2,1500505,6,15,109,3710,7,1,,2,2,2,,,,,,,,,,3,3,4,3,3,3,3,4,3,4,3,4,4,5,4,3,4,3,5,2,2,3,,,,,,,,,,,,1,,2,5,1,3,3,2,4,3,5,4,,,,,,,,,,,,5,4,3,4,4,4,4,4,4,,,,,,,2,,2,,EN,,,Social Studies teacher,,"1,2,3,4,5,8,6,7",888,7,4,Free Lunch,Economically Disadvantaged – Y,EL Student First Year,ELL,active
|
||||||
2021-03-31 9:51:39,2021-03-31 10:01:36,0,73.47.153.77,100,596,1,2021-03-31T10:01:36,student_survey_response_6,,,,,,42.65820313,-71.30580139,anonymous,EN,3,2,1500505,6,15,109,3710,7,1,,2,2,2,,,,,,,,,,3,3,4,3,3,3,3,4,3,4,3,4,4,5,4,3,4,3,5,2,2,3,,,,,,,,,,,,1,,2,5,1,3,3,2,4,3,5,4,,,,,,,,,,,,5,4,3,4,4,4,4,4,4,,,,,,,2,,2,,EN,,,Social Studies teacher,,"1,2,3,4,5,8",888,3,NA,Not Eligible,Economically Disadvantaged – N,Unknown,Unknown,NA
|
2021-03-31 9:51:39,2021-03-31 10:01:36,0,73.47.153.77,100,596,1,2021-03-31T10:01:36,student_survey_response_6,,,,,,42.65820313,-71.30580139,anonymous,EN,3,2,1500505,6,15,109,3710,7,1,,2,2,2,,,,,,,,,,3,3,4,3,3,3,3,4,3,4,3,4,4,5,4,3,4,3,5,2,2,3,,,,,,,,,,,,1,,2,5,1,3,3,2,4,3,5,4,,,,,,,,,,,,5,4,3,4,4,4,4,4,4,,,,,,,2,,2,,EN,,,Social Studies teacher,,"1,2,3,4,5,8",888,3,NA,Not Eligible,Economically Disadvantaged – N,Unknown,Unknown,NA
|
||||||
|
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ require "rails_helper"
|
||||||
RSpec.describe SurveyItemValues, type: :model do
|
RSpec.describe SurveyItemValues, type: :model do
|
||||||
let(:headers) do
|
let(:headers) do
|
||||||
["StartDate", "EndDate", "Status", "IPAddress", "Progress", "Duration (in seconds)", "Finished", "RecordedDate",
|
["StartDate", "EndDate", "Status", "IPAddress", "Progress", "Duration (in seconds)", "Finished", "RecordedDate",
|
||||||
"ResponseId", "RecipientLastName", "RecipientFirstName", "RecipientEmail", "ExternalReference", "LocationLatitude", "LocationLongitude", "DistributionChannel", "UserLanguage", "District", "School- Lee", "School- Maynard", "LASID", "Grade", "s-emsa-q1", "s-emsa-q2", "s-emsa-q3", "s-tint-q1", "s-tint-q2", "s-tint-q3", "s-tint-q4", "s-tint-q5", "s-acpr-q1", "s-acpr-q2", "s-acpr-q3", "s-acpr-q4", "s-cure-q1", "s-cure-q2", "s-cure-q3", "s-cure-q4", "s-sten-q1", "s-sten-q2", "s-sten-q3", "s-sper-q1", "s-sper-q2", "s-sper-q3", "s-sper-q4", "s-civp-q1", "s-civp-q2", "s-civp-q3", "s-civp-q4", "s-grmi-q1", "s-grmi-q2", "s-grmi-q3", "s-grmi-q4", "s-appa-q1", "s-appa-q2", "s-appa-q3", "s-peff-q1", "s-peff-q2", "s-peff-q3", "s-peff-q4", "s-peff-q5", "s-peff-q6", "s-sbel-q1", "s-sbel-q2", "s-sbel-q3", "s-sbel-q4", "s-sbel-q5", "s-phys-q1", "s-phys-q2", "s-phys-q3", "s-phys-q4", "s-vale-q1", "s-vale-q2", "s-vale-q3", "s-vale-q4", "s-acst-q1", "s-acst-q2", "s-acst-q3", "s-sust-q1", "s-sust-q2", "s-grit-q1", "s-grit-q2", "s-grit-q3", "s-grit-q4", "s-expa-q1", "s-poaf-q1", "s-poaf-q2", "s-poaf-q3", "s-poaf-q4", "s-tint-q1-1", "s-tint-q2-1", "s-tint-q3-1", "s-tint-q4-1", "s-tint-q5-1", "s-acpr-q1-1", "s-acpr-q2-1", "s-acpr-q3-1", "s-acpr-q4-1", "s-peff-q1-1", "s-peff-q2-1", "s-peff-q3-1", "s-peff-q4-1", "s-peff-q5-1", "s-peff-q6-1", "Gender", "Race"]
|
"ResponseId", "RecipientLastName", "RecipientFirstName", "RecipientEmail", "ExternalReference", "LocationLatitude", "LocationLongitude", "DistributionChannel", "UserLanguage", "District", "School- Lee", "School- Maynard", "LASID", "Grade", "s-emsa-q1", "s-emsa-q2", "s-emsa-q3", "s-tint-q1", "s-tint-q2", "s-tint-q3", "s-tint-q4", "s-tint-q5", "s-acpr-q1", "s-acpr-q2", "s-acpr-q3", "s-acpr-q4", "s-cure-q1", "s-cure-q2", "s-cure-q3", "s-cure-q4", "s-sten-q1", "s-sten-q2", "s-sten-q3", "s-sper-q1", "s-sper-q2", "s-sper-q3", "s-sper-q4", "s-civp-q1", "s-civp-q2", "s-civp-q3", "s-civp-q4", "s-grmi-q1", "s-grmi-q2", "s-grmi-q3", "s-grmi-q4", "s-appa-q1", "s-appa-q2", "s-appa-q3", "s-peff-q1", "s-peff-q2", "s-peff-q3", "s-peff-q4", "s-peff-q5", "s-peff-q6", "s-sbel-q1", "s-sbel-q2", "s-sbel-q3", "s-sbel-q4", "s-sbel-q5", "s-phys-q1", "s-phys-q2", "s-phys-q3", "s-phys-q4", "s-vale-q1", "s-vale-q2", "s-vale-q3", "s-vale-q4", "s-acst-q1", "s-acst-q2", "s-acst-q3", "s-sust-q1", "s-sust-q2", "s-grit-q1", "s-grit-q2", "s-grit-q3", "s-grit-q4", "s-expa-q1", "s-poaf-q1", "s-poaf-q2", "s-poaf-q3", "s-poaf-q4", "s-tint-q1-1", "s-tint-q2-1", "s-tint-q3-1", "s-tint-q4-1", "s-tint-q5-1", "s-acpr-q1-1", "s-acpr-q2-1", "s-acpr-q3-1", "s-acpr-q4-1", "s-peff-q1-1", "s-peff-q2-1", "s-peff-q3-1", "s-peff-q4-1", "s-peff-q5-1", "s-peff-q6-1", "Gender", "Race"]
|
||||||
end
|
end
|
||||||
let(:genders) do
|
let(:genders) do
|
||||||
create(:gender, qualtrics_code: 1)
|
create(:gender, qualtrics_code: 1)
|
||||||
|
|
@ -27,6 +27,10 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
Race.by_qualtrics_code
|
Race.by_qualtrics_code
|
||||||
end
|
end
|
||||||
|
|
||||||
|
let(:demographic_filepath) do
|
||||||
|
Rails.root.join("spec", "fixtures", "demographic_glossary.csv")
|
||||||
|
end
|
||||||
|
|
||||||
let(:survey_items) { [] }
|
let(:survey_items) { [] }
|
||||||
let(:district) { create(:district, name: "Attleboro") }
|
let(:district) { create(:district, name: "Attleboro") }
|
||||||
let(:attleboro) do
|
let(:attleboro) do
|
||||||
|
|
@ -48,12 +52,12 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
|
|
||||||
let(:standard_survey_items) do
|
let(:standard_survey_items) do
|
||||||
survey_item_ids = %w[s-peff-q1 s-peff-q2 s-peff-q3 s-peff-q4 s-peff-q5 s-peff-q6 s-phys-q1 s-phys-q2 s-phys-q3 s-phys-q4
|
survey_item_ids = %w[s-peff-q1 s-peff-q2 s-peff-q3 s-peff-q4 s-peff-q5 s-peff-q6 s-phys-q1 s-phys-q2 s-phys-q3 s-phys-q4
|
||||||
s-emsa-q1 s-emsa-q2 s-emsa-q3 s-sbel-q1 s-sbel-q2 s-sbel-q3 s-sbel-q4 s-sbel-q5 s-tint-q1 s-tint-q2
|
s-emsa-q1 s-emsa-q2 s-emsa-q3 s-sbel-q1 s-sbel-q2 s-sbel-q3 s-sbel-q4 s-sbel-q5 s-tint-q1 s-tint-q2
|
||||||
s-tint-q3 s-tint-q4 s-tint-q5 s-vale-q1 s-vale-q2 s-vale-q3 s-vale-q4 s-acpr-q1 s-acpr-q2 s-acpr-q3
|
s-tint-q3 s-tint-q4 s-tint-q5 s-vale-q1 s-vale-q2 s-vale-q3 s-vale-q4 s-acpr-q1 s-acpr-q2 s-acpr-q3
|
||||||
s-acpr-q4 s-sust-q1 s-sust-q2 s-cure-q1 s-cure-q2 s-cure-q3 s-cure-q4 s-sten-q1 s-sten-q2 s-sten-q3
|
s-acpr-q4 s-sust-q1 s-sust-q2 s-cure-q1 s-cure-q2 s-cure-q3 s-cure-q4 s-sten-q1 s-sten-q2 s-sten-q3
|
||||||
s-sper-q1 s-sper-q2 s-sper-q3 s-sper-q4 s-civp-q1 s-civp-q2 s-civp-q3 s-civp-q4 s-grit-q1 s-grit-q2
|
s-sper-q1 s-sper-q2 s-sper-q3 s-sper-q4 s-civp-q1 s-civp-q2 s-civp-q3 s-civp-q4 s-grit-q1 s-grit-q2
|
||||||
s-grit-q3 s-grit-q4 s-grmi-q1 s-grmi-q2 s-grmi-q3 s-grmi-q4 s-expa-q1 s-appa-q1 s-appa-q2 s-appa-q3
|
s-grit-q3 s-grit-q4 s-grmi-q1 s-grmi-q2 s-grmi-q3 s-grmi-q4 s-expa-q1 s-appa-q1 s-appa-q2 s-appa-q3
|
||||||
s-acst-q1 s-acst-q2 s-acst-q3 s-poaf-q1 s-poaf-q2 s-poaf-q3 s-poaf-q4]
|
s-acst-q1 s-acst-q2 s-acst-q3 s-poaf-q1 s-poaf-q2 s-poaf-q3 s-poaf-q4]
|
||||||
survey_item_ids.map do |survey_item_id|
|
survey_item_ids.map do |survey_item_id|
|
||||||
create(:survey_item, survey_item_id:)
|
create(:survey_item, survey_item_id:)
|
||||||
end
|
end
|
||||||
|
|
@ -62,12 +66,12 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
|
|
||||||
let(:short_form_survey_items) do
|
let(:short_form_survey_items) do
|
||||||
survey_item_ids = %w[s-peff-q1 s-peff-q2 s-peff-q3 s-peff-q4 s-peff-q5 s-peff-q6 s-phys-q1 s-phys-q2 s-phys-q3 s-phys-q4
|
survey_item_ids = %w[s-peff-q1 s-peff-q2 s-peff-q3 s-peff-q4 s-peff-q5 s-peff-q6 s-phys-q1 s-phys-q2 s-phys-q3 s-phys-q4
|
||||||
s-emsa-q1 s-emsa-q2 s-emsa-q3 s-sbel-q1 s-sbel-q2 s-sbel-q3 s-sbel-q4 s-sbel-q5 s-tint-q1 s-tint-q2
|
s-emsa-q1 s-emsa-q2 s-emsa-q3 s-sbel-q1 s-sbel-q2 s-sbel-q3 s-sbel-q4 s-sbel-q5 s-tint-q1 s-tint-q2
|
||||||
s-tint-q3 s-tint-q4 s-tint-q5 s-vale-q1 s-vale-q2 s-vale-q3 s-vale-q4 s-acpr-q1 s-acpr-q2 s-acpr-q3
|
s-tint-q3 s-tint-q4 s-tint-q5 s-vale-q1 s-vale-q2 s-vale-q3 s-vale-q4 s-acpr-q1 s-acpr-q2 s-acpr-q3
|
||||||
s-acpr-q4 s-sust-q1 s-sust-q2 s-cure-q1 s-cure-q2 s-cure-q3 s-cure-q4 s-sten-q1 s-sten-q2 s-sten-q3
|
s-acpr-q4 s-sust-q1 s-sust-q2 s-cure-q1 s-cure-q2 s-cure-q3 s-cure-q4 s-sten-q1 s-sten-q2 s-sten-q3
|
||||||
s-sper-q1 s-sper-q2 s-sper-q3 s-sper-q4 s-civp-q1 s-civp-q2 s-civp-q3 s-civp-q4 s-grit-q1 s-grit-q2
|
s-sper-q1 s-sper-q2 s-sper-q3 s-sper-q4 s-civp-q1 s-civp-q2 s-civp-q3 s-civp-q4 s-grit-q1 s-grit-q2
|
||||||
s-grit-q3 s-grit-q4 s-grmi-q1 s-grmi-q2 s-grmi-q3 s-grmi-q4 s-expa-q1 s-appa-q1 s-appa-q2 s-appa-q3
|
s-grit-q3 s-grit-q4 s-grmi-q1 s-grmi-q2 s-grmi-q3 s-grmi-q4 s-expa-q1 s-appa-q1 s-appa-q2 s-appa-q3
|
||||||
s-acst-q1 s-acst-q2 s-acst-q3 s-poaf-q1 s-poaf-q2 s-poaf-q3 s-poaf-q4 s-phys-q1 s-phys-q2 s-phys-q3]
|
s-acst-q1 s-acst-q2 s-acst-q3 s-poaf-q1 s-poaf-q2 s-poaf-q3 s-poaf-q4 s-phys-q1 s-phys-q2 s-phys-q3]
|
||||||
survey_item_ids.map do |survey_item_id|
|
survey_item_ids.map do |survey_item_id|
|
||||||
create(:survey_item, survey_item_id:, on_short_form: true)
|
create(:survey_item, survey_item_id:, on_short_form: true)
|
||||||
end
|
end
|
||||||
|
|
@ -76,12 +80,12 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
|
|
||||||
let(:early_education_survey_items) do
|
let(:early_education_survey_items) do
|
||||||
survey_item_ids = %w[s-peff-es1 s-peff-es2 s-peff-es3 s-peff-es4 s-peff-es5 s-peff-es6 s-phys-es1 s-phys-es2 s-phys-es3 s-phys-es4
|
survey_item_ids = %w[s-peff-es1 s-peff-es2 s-peff-es3 s-peff-es4 s-peff-es5 s-peff-es6 s-phys-es1 s-phys-es2 s-phys-es3 s-phys-es4
|
||||||
s-emsa-es1 s-emsa-es2 s-emsa-es3 s-sbel-es1 s-sbel-es2 s-sbel-es3 s-sbel-es4 s-sbel-es5 s-tint-es1 s-tint-es2
|
s-emsa-es1 s-emsa-es2 s-emsa-es3 s-sbel-es1 s-sbel-es2 s-sbel-es3 s-sbel-es4 s-sbel-es5 s-tint-es1 s-tint-es2
|
||||||
s-tint-es3 s-tint-es4 s-tint-es5 s-vale-es1 s-vale-es2 s-vale-es3 s-vale-es4 s-acpr-es1 s-acpr-es2 s-acpr-es3
|
s-tint-es3 s-tint-es4 s-tint-es5 s-vale-es1 s-vale-es2 s-vale-es3 s-vale-es4 s-acpr-es1 s-acpr-es2 s-acpr-es3
|
||||||
s-acpr-es4 s-sust-es1 s-sust-es2 s-cure-es1 s-cure-es2 s-cure-es3 s-cure-es4 s-sten-es1 s-sten-es2 s-sten-es3
|
s-acpr-es4 s-sust-es1 s-sust-es2 s-cure-es1 s-cure-es2 s-cure-es3 s-cure-es4 s-sten-es1 s-sten-es2 s-sten-es3
|
||||||
s-sper-es1 s-sper-es2 s-sper-es3 s-sper-es4 s-civp-es1 s-civp-es2 s-civp-es3 s-civp-es4 s-grit-es1 s-grit-es2
|
s-sper-es1 s-sper-es2 s-sper-es3 s-sper-es4 s-civp-es1 s-civp-es2 s-civp-es3 s-civp-es4 s-grit-es1 s-grit-es2
|
||||||
s-grit-es3 s-grit-es4 s-grmi-es1 s-grmi-es2 s-grmi-es3 s-grmi-es4 s-expa-es1 s-appa-es1 s-appa-es2 s-appa-es3
|
s-grit-es3 s-grit-es4 s-grmi-es1 s-grmi-es2 s-grmi-es3 s-grmi-es4 s-expa-es1 s-appa-es1 s-appa-es2 s-appa-es3
|
||||||
s-acst-es1 s-acst-es2 s-acst-es3 s-poaf-es1 s-poaf-es2 s-poaf-es3 s-poaf-es4 s-phys-es1 s-phys-es2 s-phys-es3]
|
s-acst-es1 s-acst-es2 s-acst-es3 s-poaf-es1 s-poaf-es2 s-poaf-es3 s-poaf-es4 s-phys-es1 s-phys-es2 s-phys-es3]
|
||||||
survey_item_ids.map do |survey_item_id|
|
survey_item_ids.map do |survey_item_id|
|
||||||
create(:survey_item, survey_item_id:)
|
create(:survey_item, survey_item_id:)
|
||||||
end
|
end
|
||||||
|
|
@ -90,12 +94,12 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
|
|
||||||
let(:teacher_survey_items) do
|
let(:teacher_survey_items) do
|
||||||
survey_item_ids = %w[t-prep-q1 t-prep-q2 t-prep-q3 t-ieff-q1 t-ieff-q2 t-ieff-q3 t-ieff-q4 t-pcom-q1 t-pcom-q2 t-pcom-q3
|
survey_item_ids = %w[t-prep-q1 t-prep-q2 t-prep-q3 t-ieff-q1 t-ieff-q2 t-ieff-q3 t-ieff-q4 t-pcom-q1 t-pcom-q2 t-pcom-q3
|
||||||
t-pcom-q4 t-pcom-q5 t-inle-q1 t-inle-q2 t-inle-q3 t-prtr-q1 t-prtr-q2 t-prtr-q3 t-coll-q1 t-coll-q2
|
t-pcom-q4 t-pcom-q5 t-inle-q1 t-inle-q2 t-inle-q3 t-prtr-q1 t-prtr-q2 t-prtr-q3 t-coll-q1 t-coll-q2
|
||||||
t-coll-q3 t-qupd-q1 t-qupd-q2 t-qupd-q3 t-qupd-q4 t-pvic-q1 t-pvic-q2 t-pvic-q3 t-psup-q1 t-psup-q2
|
t-coll-q3 t-qupd-q1 t-qupd-q2 t-qupd-q3 t-qupd-q4 t-pvic-q1 t-pvic-q2 t-pvic-q3 t-psup-q1 t-psup-q2
|
||||||
t-psup-q3 t-psup-q4 t-acch-q1 t-acch-q2 t-acch-q3 t-reso-q1 t-reso-q2 t-reso-q3 t-reso-q4 t-reso-q5
|
t-psup-q3 t-psup-q4 t-acch-q1 t-acch-q2 t-acch-q3 t-reso-q1 t-reso-q2 t-reso-q3 t-reso-q4 t-reso-q5
|
||||||
t-sust-q1 t-sust-q2 t-sust-q3 t-sust-q4 t-curv-q1 t-curv-q2 t-curv-q3 t-curv-q4 t-cure-q1 t-cure-q2
|
t-sust-q1 t-sust-q2 t-sust-q3 t-sust-q4 t-curv-q1 t-curv-q2 t-curv-q3 t-curv-q4 t-cure-q1 t-cure-q2
|
||||||
t-cure-q3 t-cure-q4 t-peng-q1 t-peng-q2 t-peng-q3 t-peng-q4 t-ceng-q1 t-ceng-q2 t-ceng-q3 t-ceng-q4
|
t-cure-q3 t-cure-q4 t-peng-q1 t-peng-q2 t-peng-q3 t-peng-q4 t-ceng-q1 t-ceng-q2 t-ceng-q3 t-ceng-q4
|
||||||
t-sach-q1 t-sach-q2 t-sach-q3 t-psol-q1 t-psol-q2 t-psol-q3 t-expa-q2 t-expa-q3 t-phya-q2 t-phya-q3]
|
t-sach-q1 t-sach-q2 t-sach-q3 t-psol-q1 t-psol-q2 t-psol-q3 t-expa-q2 t-expa-q3 t-phya-q2 t-phya-q3]
|
||||||
|
|
||||||
survey_item_ids.map do |survey_item_id|
|
survey_item_ids.map do |survey_item_id|
|
||||||
create(:survey_item, survey_item_id:)
|
create(:survey_item, survey_item_id:)
|
||||||
|
|
@ -541,6 +545,15 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
ay_2022_23
|
ay_2022_23
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "validates the code matches the expectations defined in the demographic_glossary" do
|
||||||
|
list = read(demographic_filepath, "ELL Value", "ELL Type")
|
||||||
|
|
||||||
|
list.each do |target, result|
|
||||||
|
compare("Raw ELL", target, result, :ell)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
it 'translates "LEP Student 1st Year" or "LEP Student Not 1st Year" into ELL' do
|
it 'translates "LEP Student 1st Year" or "LEP Student Not 1st Year" into ELL' do
|
||||||
headers = ["Raw ELL"]
|
headers = ["Raw ELL"]
|
||||||
row = { "Raw ELL" => "LEP Student 1st Year" }
|
row = { "Raw ELL" => "LEP Student 1st Year" }
|
||||||
|
|
@ -586,23 +599,11 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
expect(values.ell).to eq "Not ELL"
|
expect(values.ell).to eq "Not ELL"
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'tranlsates NAs and blanks into "Not ELL"' do
|
it 'tranlsates blanks into "Not ELL"' do
|
||||||
headers = ["Raw ELL"]
|
headers = ["Raw ELL"]
|
||||||
row = { "Raw ELL" => "" }
|
row = { "Raw ELL" => "" }
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:, academic_years:)
|
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:, academic_years:)
|
||||||
expect(values.ell).to eq "Not ELL"
|
expect(values.ell).to eq "Not ELL"
|
||||||
|
|
||||||
row = { "Raw ELL" => "NA" }
|
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:)
|
|
||||||
expect(values.ell).to eq "Not ELL"
|
|
||||||
|
|
||||||
row = { "Raw ELL" => "#NA" }
|
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:)
|
|
||||||
expect(values.ell).to eq "Not ELL"
|
|
||||||
|
|
||||||
row = { "Raw ELL" => "#N/A" }
|
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:)
|
|
||||||
expect(values.ell).to eq "Not ELL"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# NOTE: This will halt test runs too
|
# NOTE: This will halt test runs too
|
||||||
|
|
@ -621,6 +622,15 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
ay_2022_23
|
ay_2022_23
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "validates the code matches the expectations defined in the demographic_glossary" do
|
||||||
|
list = read(demographic_filepath, "Sped Value", "Sped Type")
|
||||||
|
|
||||||
|
list.each do |target, result|
|
||||||
|
compare("Raw Sped", target, result, :sped)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
it 'translates "active" into "Special Education"' do
|
it 'translates "active" into "Special Education"' do
|
||||||
headers = ["Raw SpEd"]
|
headers = ["Raw SpEd"]
|
||||||
row = { "Raw SpEd" => "active" }
|
row = { "Raw SpEd" => "active" }
|
||||||
|
|
@ -670,15 +680,15 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
expect(values.sped).to eq "Not Special Education"
|
expect(values.sped).to eq "Not Special Education"
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'translates NA into "Not Special Education"' do
|
it 'translates NA into "Unknown"' do
|
||||||
headers = ["Raw SpEd"]
|
headers = ["Raw SpEd"]
|
||||||
row = { "Raw SpEd" => "NA" }
|
row = { "Raw SpEd" => "NA" }
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:, academic_years:)
|
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:, academic_years:)
|
||||||
expect(values.sped).to eq "Not Special Education"
|
expect(values.sped).to eq "Unknown"
|
||||||
|
|
||||||
row = { "Raw SpEd" => "#NA" }
|
row = { "Raw SpEd" => "#NA" }
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:, academic_years:)
|
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:, academic_years:)
|
||||||
expect(values.sped).to eq "Not Special Education"
|
expect(values.sped).to eq "Unknown"
|
||||||
end
|
end
|
||||||
|
|
||||||
# NOTE: This will halt test runs too
|
# NOTE: This will halt test runs too
|
||||||
|
|
@ -695,33 +705,33 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "returns true" do
|
it "returns true" do
|
||||||
headers = standard_survey_items
|
headers = standard_survey_items
|
||||||
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "240", "Gender" => "Male" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "240", "Gender" => "Male" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.valid_duration?).to eq true
|
expect(values.valid_duration?).to eq true
|
||||||
|
|
||||||
headers = teacher_survey_items
|
headers = teacher_survey_items
|
||||||
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "300" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "300" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.valid_duration?).to eq true
|
expect(values.valid_duration?).to eq true
|
||||||
|
|
||||||
headers = short_form_survey_items
|
headers = short_form_survey_items
|
||||||
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "100" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "100" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.valid_duration?).to eq true
|
expect(values.valid_duration?).to eq true
|
||||||
|
|
||||||
# When duration is blank or N/A or NA, we don't have enough information to kick out the row as invalid so we keep it in
|
# When duration is blank or N/A or NA, we don't have enough information to kick out the row as invalid so we keep it in
|
||||||
headers = short_form_survey_items
|
headers = short_form_survey_items
|
||||||
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.valid_duration?).to eq true
|
expect(values.valid_duration?).to eq true
|
||||||
|
|
||||||
headers = short_form_survey_items
|
headers = short_form_survey_items
|
||||||
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "N/A" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "N/A" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.valid_duration?).to eq true
|
expect(values.valid_duration?).to eq true
|
||||||
|
|
||||||
headers = short_form_survey_items
|
headers = short_form_survey_items
|
||||||
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "NA" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "NA" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.valid_duration?).to eq true
|
expect(values.valid_duration?).to eq true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -730,16 +740,16 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "returns false" do
|
it "returns false" do
|
||||||
headers = standard_survey_items
|
headers = standard_survey_items
|
||||||
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "239" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "239" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.valid_duration?).to eq false
|
expect(values.valid_duration?).to eq false
|
||||||
|
|
||||||
headers = teacher_survey_items
|
headers = teacher_survey_items
|
||||||
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "299" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "299" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.valid_duration?).to eq false
|
expect(values.valid_duration?).to eq false
|
||||||
headers = short_form_survey_items
|
headers = short_form_survey_items
|
||||||
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "99" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "Duration (in seconds)" => "99" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.valid_duration?).to eq false
|
expect(values.valid_duration?).to eq false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -749,8 +759,8 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "returns the number of questions answered" do
|
it "returns the number of questions answered" do
|
||||||
headers = standard_survey_items
|
headers = standard_survey_items
|
||||||
row = { "s-peff-q1" => 1, "s-peff-q2" => 1, "s-peff-q3" => 1, "s-peff-q4" => 1,
|
row = { "s-peff-q1" => 1, "s-peff-q2" => 1, "s-peff-q3" => 1, "s-peff-q4" => 1,
|
||||||
"s-peff-q5" => 1, "s-peff-q6" => 1, "s-phys-q1" => 1, "s-phys-q2" => 1,
|
"s-peff-q5" => 1, "s-peff-q6" => 1, "s-phys-q1" => 1, "s-phys-q2" => 1,
|
||||||
"s-phys-q3" => 1, "s-phys-q4" => 1 }
|
"s-phys-q3" => 1, "s-phys-q4" => 1 }
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:, academic_years:)
|
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:, academic_years:)
|
||||||
expect(values.progress).to eq 10
|
expect(values.progress).to eq 10
|
||||||
end
|
end
|
||||||
|
|
@ -761,12 +771,12 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "when there are 17 or more standard survey items valid_progress returns true" do
|
it "when there are 17 or more standard survey items valid_progress returns true" do
|
||||||
headers = standard_survey_items
|
headers = standard_survey_items
|
||||||
row = { "s-peff-q1" => 1, "s-peff-q2" => 1, "s-peff-q3" => 1, "s-peff-q4" => 1,
|
row = { "s-peff-q1" => 1, "s-peff-q2" => 1, "s-peff-q3" => 1, "s-peff-q4" => 1,
|
||||||
"s-peff-q5" => 1, "s-peff-q6" => 1, "s-phys-q1" => 1, "s-phys-q2" => 1,
|
"s-peff-q5" => 1, "s-peff-q6" => 1, "s-phys-q1" => 1, "s-phys-q2" => 1,
|
||||||
"s-phys-q3" => 1, "s-phys-q4" => 1, "s-emsa-q1" => 1, "s-emsa-q2" => 1,
|
"s-phys-q3" => 1, "s-phys-q4" => 1, "s-emsa-q1" => 1, "s-emsa-q2" => 1,
|
||||||
"s-emsa-q3" => 1, "s-sbel-q1" => 1, "s-sbel-q2" => 1, "s-sbel-q3" => 1,
|
"s-emsa-q3" => 1, "s-sbel-q1" => 1, "s-sbel-q2" => 1, "s-sbel-q3" => 1,
|
||||||
"s-sbel-q4" => 1 }
|
"s-sbel-q4" => 1 }
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.progress).to eq 17
|
expect(values.progress).to eq 17
|
||||||
expect(values.valid_progress?).to eq true
|
expect(values.valid_progress?).to eq true
|
||||||
end
|
end
|
||||||
|
|
@ -781,7 +791,7 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
"t-psup-q3" => 1, "t-psup-q4" => 1, "t-acch-q1" => 1, "t-acch-q2" => 1
|
"t-psup-q3" => 1, "t-psup-q4" => 1, "t-acch-q1" => 1, "t-acch-q2" => 1
|
||||||
}
|
}
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.progress).to eq 12
|
expect(values.progress).to eq 12
|
||||||
expect(values.valid_progress?).to eq true
|
expect(values.valid_progress?).to eq true
|
||||||
end
|
end
|
||||||
|
|
@ -789,9 +799,9 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "when there are 5 or more short form survey items valid_progress returns true" do
|
it "when there are 5 or more short form survey items valid_progress returns true" do
|
||||||
headers = short_form_survey_items
|
headers = short_form_survey_items
|
||||||
row = { "s-peff-q1" => 1, "s-peff-q2" => 1, "s-peff-q3" => 1, "s-peff-q4" => 1,
|
row = { "s-peff-q1" => 1, "s-peff-q2" => 1, "s-peff-q3" => 1, "s-peff-q4" => 1,
|
||||||
"s-sbel-q4" => 1 }
|
"s-sbel-q4" => 1 }
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.progress).to eq 5
|
expect(values.progress).to eq 5
|
||||||
expect(values.valid_progress?).to eq true
|
expect(values.valid_progress?).to eq true
|
||||||
end
|
end
|
||||||
|
|
@ -799,9 +809,9 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "when there are 5 or more early education survey items valid_progress returns true" do
|
it "when there are 5 or more early education survey items valid_progress returns true" do
|
||||||
headers = early_education_survey_items
|
headers = early_education_survey_items
|
||||||
row = { "s-peff-es1" => 1, "s-peff-es2" => 1, "s-peff-es3" => 1, "s-peff-es4" => 1,
|
row = { "s-peff-es1" => 1, "s-peff-es2" => 1, "s-peff-es3" => 1, "s-peff-es4" => 1,
|
||||||
"s-peff-es5" => 1 }
|
"s-peff-es5" => 1 }
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.progress).to eq 5
|
expect(values.progress).to eq 5
|
||||||
expect(values.valid_progress?).to eq true
|
expect(values.valid_progress?).to eq true
|
||||||
end
|
end
|
||||||
|
|
@ -811,10 +821,10 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "when there are fewer than 11 standard survey items valid_progress returns true" do
|
it "when there are fewer than 11 standard survey items valid_progress returns true" do
|
||||||
headers = standard_survey_items
|
headers = standard_survey_items
|
||||||
row = { "s-peff-q1" => 1, "s-peff-q2" => 1, "s-peff-q3" => 1, "s-peff-q4" => 1,
|
row = { "s-peff-q1" => 1, "s-peff-q2" => 1, "s-peff-q3" => 1, "s-peff-q4" => 1,
|
||||||
"s-peff-q5" => 1, "s-peff-q6" => 1, "s-phys-q1" => 1, "s-phys-q2" => 1,
|
"s-peff-q5" => 1, "s-peff-q6" => 1, "s-phys-q1" => 1, "s-phys-q2" => 1,
|
||||||
"s-emsa-q3" => 1, "s-sbel-q1" => 1 }
|
"s-emsa-q3" => 1, "s-sbel-q1" => 1 }
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.progress).to eq 10
|
expect(values.progress).to eq 10
|
||||||
expect(values.valid_progress?).to eq false
|
expect(values.valid_progress?).to eq false
|
||||||
end
|
end
|
||||||
|
|
@ -829,7 +839,7 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
"t-psup-q3" => 1, "t-psup-q4" => 1, "t-acch-q1" => 1
|
"t-psup-q3" => 1, "t-psup-q4" => 1, "t-acch-q1" => 1
|
||||||
}
|
}
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.progress).to eq 11
|
expect(values.progress).to eq 11
|
||||||
expect(values.valid_progress?).to eq false
|
expect(values.valid_progress?).to eq false
|
||||||
end
|
end
|
||||||
|
|
@ -838,7 +848,7 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
headers = short_form_survey_items
|
headers = short_form_survey_items
|
||||||
row = { "s-peff-q1" => 1, "s-peff-q2" => 1, "s-peff-q3" => 1, "s-peff-q4" => 1 }
|
row = { "s-peff-q1" => 1, "s-peff-q2" => 1, "s-peff-q3" => 1, "s-peff-q4" => 1 }
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.progress).to eq 4
|
expect(values.progress).to eq 4
|
||||||
expect(values.valid_progress?).to eq false
|
expect(values.valid_progress?).to eq false
|
||||||
end
|
end
|
||||||
|
|
@ -847,7 +857,7 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
headers = early_education_survey_items
|
headers = early_education_survey_items
|
||||||
row = { "s-peff-es1" => 1, "s-peff-es2" => 1, "s-peff-es3" => 1, "s-peff-es4" => 1 }
|
row = { "s-peff-es1" => 1, "s-peff-es2" => 1, "s-peff-es3" => 1, "s-peff-es4" => 1 }
|
||||||
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
values = SurveyItemValues.new(row:, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.progress).to eq 4
|
expect(values.progress).to eq 4
|
||||||
expect(values.valid_progress?).to eq false
|
expect(values.valid_progress?).to eq false
|
||||||
end
|
end
|
||||||
|
|
@ -863,14 +873,14 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "returns true for students" do
|
it "returns true for students" do
|
||||||
headers = %w[s-sbel-q5 s-phys-q2 grade RecordedDate DeseID]
|
headers = %w[s-sbel-q5 s-phys-q2 grade RecordedDate DeseID]
|
||||||
values = SurveyItemValues.new(row: { "grade" => "9", "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "grade" => "9", "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
|
|
||||||
expect(values.valid_grade?).to eq true
|
expect(values.valid_grade?).to eq true
|
||||||
end
|
end
|
||||||
it "returns true for teachers" do
|
it "returns true for teachers" do
|
||||||
headers = %w[t-sbel-q5 t-phys-q2 grade RecordedDate DeseID]
|
headers = %w[t-sbel-q5 t-phys-q2 grade RecordedDate DeseID]
|
||||||
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
expect(values.valid_grade?).to eq true
|
expect(values.valid_grade?).to eq true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -883,7 +893,7 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "returns false" do
|
it "returns false" do
|
||||||
headers = %w[s-sbel-q5 s-phys-q2 grade RecordedDate DeseID]
|
headers = %w[s-sbel-q5 s-phys-q2 grade RecordedDate DeseID]
|
||||||
values = SurveyItemValues.new(row: { "grade" => "2", "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "grade" => "2", "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
||||||
schools: School.by_dese_id)
|
schools: School.by_dese_id)
|
||||||
expect(values.valid_grade?).to eq false
|
expect(values.valid_grade?).to eq false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -894,13 +904,13 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "returns true for student questions" do
|
it "returns true for student questions" do
|
||||||
headers = %w[s-sbel-q5 s-phys-q1 s-phys-q2 RecordedDate]
|
headers = %w[s-sbel-q5 s-phys-q1 s-phys-q2 RecordedDate]
|
||||||
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "Dese ID" => "1234", "s-sbel-q5" => "1", "s-phys-q1" => "", "s-phys-q2" => "5" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "Dese ID" => "1234", "s-sbel-q5" => "1", "s-phys-q1" => "", "s-phys-q2" => "5" }, headers:, survey_items:,
|
||||||
schools: School.by_dese_id)
|
schools: School.by_dese_id)
|
||||||
expect(values.valid_sd?).to eq true
|
expect(values.valid_sd?).to eq true
|
||||||
end
|
end
|
||||||
it "returns true for teacher questions" do
|
it "returns true for teacher questions" do
|
||||||
headers = %w[t-sbel-q5 t-phys-q2]
|
headers = %w[t-sbel-q5 t-phys-q2]
|
||||||
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "Dese ID" => "1234", "t-sbel-q5" => "1", "t-phys-q2" => "5" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "Dese ID" => "1234", "t-sbel-q5" => "1", "t-phys-q2" => "5" }, headers:, survey_items:,
|
||||||
schools: School.by_dese_id)
|
schools: School.by_dese_id)
|
||||||
expect(values.valid_sd?).to eq true
|
expect(values.valid_sd?).to eq true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -909,13 +919,13 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "returns false for student questions" do
|
it "returns false for student questions" do
|
||||||
headers = %w[s-sbel-q5 s-phys-q1 s-phys-q2 RecordedDate]
|
headers = %w[s-sbel-q5 s-phys-q1 s-phys-q2 RecordedDate]
|
||||||
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "Dese ID" => "1234", "s-sbel-q5" => "1", "s-phys-q2" => "1" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "Dese ID" => "1234", "s-sbel-q5" => "1", "s-phys-q2" => "1" }, headers:, survey_items:,
|
||||||
schools: School.by_dese_id)
|
schools: School.by_dese_id)
|
||||||
expect(values.valid_sd?).to eq false
|
expect(values.valid_sd?).to eq false
|
||||||
end
|
end
|
||||||
it "returns false for teacher questions" do
|
it "returns false for teacher questions" do
|
||||||
headers = %w[t-sbel-q5 t-phys-q1 t-phys-q2 RecordedDate]
|
headers = %w[t-sbel-q5 t-phys-q1 t-phys-q2 RecordedDate]
|
||||||
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "Dese ID" => "1234", "t-sbel-q5" => "1", "t-phys-q2" => "1" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "Dese ID" => "1234", "t-sbel-q5" => "1", "t-phys-q2" => "1" }, headers:, survey_items:,
|
||||||
schools: School.by_dese_id)
|
schools: School.by_dese_id)
|
||||||
expect(values.valid_sd?).to eq false
|
expect(values.valid_sd?).to eq false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -930,7 +940,7 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "parses the date correctly when the date is in standard date format for google sheets: 'MM/DD/YYYY HH:MM:SS'" do
|
it "parses the date correctly when the date is in standard date format for google sheets: 'MM/DD/YYYY HH:MM:SS'" do
|
||||||
recorded_date = "1/10/2022 14:21:45"
|
recorded_date = "1/10/2022 14:21:45"
|
||||||
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
ay_21_22 = AcademicYear.find_by_range "2021-22"
|
ay_21_22 = AcademicYear.find_by_range "2021-22"
|
||||||
expect(values.academic_year).to eq ay_21_22
|
expect(values.academic_year).to eq ay_21_22
|
||||||
end
|
end
|
||||||
|
|
@ -938,7 +948,7 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "parses the date correctly when the date is in iso standard 8601 'YYYY-MM-DDTHH:MM:SS'" do
|
it "parses the date correctly when the date is in iso standard 8601 'YYYY-MM-DDTHH:MM:SS'" do
|
||||||
recorded_date = "2022-1-10T14:21:45"
|
recorded_date = "2022-1-10T14:21:45"
|
||||||
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
ay_21_22 = AcademicYear.find_by_range "2021-22"
|
ay_21_22 = AcademicYear.find_by_range "2021-22"
|
||||||
expect(values.academic_year).to eq ay_21_22
|
expect(values.academic_year).to eq ay_21_22
|
||||||
end
|
end
|
||||||
|
|
@ -946,9 +956,29 @@ RSpec.describe SurveyItemValues, type: :model do
|
||||||
it "parses the date correctly when the date is in the format of: 'YYYY-MM-DD HH:MM:SS'" do
|
it "parses the date correctly when the date is in the format of: 'YYYY-MM-DD HH:MM:SS'" do
|
||||||
recorded_date = "2022-01-10 14:21:45"
|
recorded_date = "2022-01-10 14:21:45"
|
||||||
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
values = SurveyItemValues.new(row: { "RecordedDate" => recorded_date, "DeseID" => "1234" }, headers:, survey_items:,
|
||||||
schools:, academic_years:)
|
schools:, academic_years:)
|
||||||
ay_21_22 = AcademicYear.find_by_range "2021-22"
|
ay_21_22 = AcademicYear.find_by_range "2021-22"
|
||||||
expect(values.academic_year).to eq ay_21_22
|
expect(values.academic_year).to eq ay_21_22
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def compare(header, target, result, model)
|
||||||
|
headers = [header]
|
||||||
|
row = { header => target}
|
||||||
|
values = SurveyItemValues.new(row:, headers:, survey_items:, schools:, academic_years:)
|
||||||
|
expect(values.send(model)).to eq result
|
||||||
|
end
|
||||||
|
|
||||||
|
def read(filepath, value_header, type_header)
|
||||||
|
map = {}
|
||||||
|
CSV.parse(File.read(filepath), headers: true) do |row|
|
||||||
|
value = row[value_header]&.strip
|
||||||
|
type = row[type_header]&.strip
|
||||||
|
next if value.blank?
|
||||||
|
next if type.blank?
|
||||||
|
next if value.downcase == "[blanks]"
|
||||||
|
map[value] = type
|
||||||
|
end
|
||||||
|
map
|
||||||
|
end
|
||||||
|
|
|
||||||
|
|
@ -344,11 +344,13 @@ def assigns_ell_to_responses
|
||||||
"student_survey_response_3" => not_ell,
|
"student_survey_response_3" => not_ell,
|
||||||
"student_survey_response_4" => yes_ell,
|
"student_survey_response_4" => yes_ell,
|
||||||
"student_survey_response_5" => yes_ell,
|
"student_survey_response_5" => yes_ell,
|
||||||
"student_survey_response_6" => not_ell,
|
"student_survey_response_6" => unknown_ell,
|
||||||
"student_survey_response_7" => not_ell }
|
"student_survey_response_7" => unknown_ell }
|
||||||
|
|
||||||
results.each do |key, value|
|
results.each do |key, value|
|
||||||
ell = SurveyItemResponse.find_by_response_id(key).ell
|
ell = SurveyItemResponse.find_by_response_id(key).ell
|
||||||
|
puts key
|
||||||
|
puts value
|
||||||
expect(ell).to eq value
|
expect(ell).to eq value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue