@ -27,6 +27,60 @@ RSpec.describe SurveyItemValues, type: :model do
create ( :academic_year , range : '2022-23' )
create ( :academic_year , range : '2022-23' )
end
end
let ( :common_headers ) do
[ 'Recorded Date' , 'DeseID' , 'ResponseID' , 'Duration (in seconds)' , 'Gender' , 'Grade' ]
end
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
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 - 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 - 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 ]
survey_item_ids . map do | survey_item_id |
create ( :survey_item , survey_item_id : )
end
( survey_item_ids << common_headers ) . flatten
end
let ( :short_form_survey_items ) do
survey_item_ids = [ create ( :survey_item , survey_item_id : 's-phys-q1' , on_short_form : true ) ,
create ( :survey_item , survey_item_id : 's-phys-q2' , on_short_form : true ) ,
create ( :survey_item , survey_item_id : 's-phys-q3' ,
on_short_form : true ) ] . map ( & :survey_item_id )
survey_item_ids . map do | survey_item_id |
create ( :survey_item , survey_item_id : )
end
( survey_item_ids << common_headers ) . flatten
end
let ( :early_education_survey_items ) do
survey_item_ids = [ create ( :survey_item , survey_item_id : 's-emsa-es1' ) ,
create ( :survey_item , survey_item_id : 's-emsa-es2' ) ,
create ( :survey_item , survey_item_id : 's-emsa-es3' ) ] . map ( & :survey_item_id )
survey_item_ids . map do | survey_item_id |
create ( :survey_item , survey_item_id : )
end
( survey_item_ids << common_headers ) . flatten
end
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
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 - 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 - 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 ]
survey_item_ids . map do | survey_item_id |
create ( :survey_item , survey_item_id : )
end
( survey_item_ids << common_headers ) . flatten
end
context '.recorded_date' do
context '.recorded_date' do
it 'returns the recorded date' do
it 'returns the recorded date' do
row = { 'RecordedDate' = > '2017-01-01' }
row = { 'RecordedDate' = > '2017-01-01' }
@ -43,18 +97,11 @@ RSpec.describe SurveyItemValues, type: :model do
context '.school' do
context '.school' do
it 'returns the school that maps to the dese id provided' do
it 'returns the school that maps to the dese id provided' do
attleboro
attleboro
headers = [ 'Dese ID' ]
row = { 'Dese ID' = > '1234' }
row = { 'Dese ID' = > '1234' }
values = SurveyItemValues . new ( row : , headers : , genders : , survey_items : , schools : )
values = SurveyItemValues . new ( row : , headers : , genders : , survey_items : , schools : )
expect ( values . school ) . to eq attleboro
expect ( values . school ) . to eq attleboro
headers = [ 'School' ]
row = { 'DeseID' = > '1234' }
row = { 'School' = > '1234' }
values = SurveyItemValues . new ( row : , headers : , genders : , survey_items : , schools : )
expect ( values . school ) . to eq attleboro
headers = [ 'School- Attleboro' ]
row = { 'School- Attleboro' = > '1234' }
values = SurveyItemValues . new ( row : , headers : , genders : , survey_items : , schools : )
values = SurveyItemValues . new ( row : , headers : , genders : , survey_items : , schools : )
expect ( values . school ) . to eq attleboro
expect ( values . school ) . to eq attleboro
end
end
@ -67,7 +114,6 @@ RSpec.describe SurveyItemValues, type: :model do
expect ( values . grade ) . to eq 1
expect ( values . grade ) . to eq 1
end
end
end
end
context '.gender' do
context '.gender' do
it 'returns the grade that maps to the grade provided' do
it 'returns the grade that maps to the grade provided' do
row = { 'Gender' = > '1' }
row = { 'Gender' = > '1' }
@ -76,40 +122,60 @@ RSpec.describe SurveyItemValues, type: :model do
end
end
end
end
context '.dese_id' do
context '.respondent_type' do
it 'returns the dese id for the id provided' do
headers = [ 'Dese ID' ]
row = { 'Dese ID' = > '11' }
values = SurveyItemValues . new ( row : , headers : , genders : , survey_items : , schools : )
expect ( values . dese_id ) . to eq 11
headers = [ 'School' ]
row = { 'School' = > '22' }
values = SurveyItemValues . new ( row : , headers : , genders : , survey_items : , schools : )
expect ( values . dese_id ) . to eq 22
end
end
context '.survey_type' do
it 'reads header to find the survey type' do
it 'reads header to find the survey type' do
headers = %w[ s-sbel-q5 s-phys-q2 RecordedDate ]
headers = %w[ s-sbel-q5 s-phys-q2 RecordedDate ]
values = SurveyItemValues . new ( row : { } , headers : , genders : , survey_items : , schools : )
values = SurveyItemValues . new ( row : { } , headers : , genders : , survey_items : , schools : )
expect ( values . survey _type) . to eq :student
expect ( values . respondent_type ) . to eq :student
headers = %w[ t-sbel-q5 t-phys-q2 ]
headers = %w[ t-sbel-q5 t-phys-q2 ]
values = SurveyItemValues . new ( row : { } , headers : , genders : , survey_items : , schools : )
values = SurveyItemValues . new ( row : { } , headers : , genders : , survey_items : , schools : )
expect ( values . respondent_type ) . to eq :teacher
end
end
context '.survey_type' do
context 'when survey type is standard form' do
it 'returns the survey type' do
headers = standard_survey_items
values = SurveyItemValues . new ( row : { } , headers : , genders : , survey_items : , schools : )
expect ( values . survey_type ) . to eq :standard
end
end
context 'when survey type is teacher form' do
it 'returns the survey type' do
headers = teacher_survey_items
values = SurveyItemValues . new ( row : { } , headers : , genders : , survey_items : , schools : )
expect ( values . survey_type ) . to eq :teacher
expect ( values . survey_type ) . to eq :teacher
end
end
end
end
context 'when survey type is short form' do
it 'returns the survey type' do
headers = short_form_survey_items
values = SurveyItemValues . new ( row : { } , headers : , genders : , survey_items : , schools : )
expect ( values . survey_type ) . to eq :short_form
end
end
context 'when survey type is early education' do
it 'returns the survey type' do
headers = early_education_survey_items
values = SurveyItemValues . new ( row : { } , headers : , genders : , survey_items : , schools : )
expect ( values . survey_type ) . to eq :early_education
end
end
end
context '.valid_duration' do
context '.valid_duration' do
context 'when duration is valid' do
context 'when duration is valid' do
it 'returns true' do
it 'returns true' do
headers = [ 's-sbel-q5' , 's-phys-q2' , 'RecordedDate' , 'Duration (in seconds)' ]
headers = standard_survey_items
values = SurveyItemValues . new ( row : { 'Duration (in seconds)' = > '240' } , headers : , genders : , survey_items : ,
values = SurveyItemValues . new ( row : { 'Duration (in seconds)' = > '240' , 'Gender' = > 'Male' } , headers : , genders : , survey_items : ,
schools : )
schools : )
expect ( values . valid_duration? ) . to eq true
expect ( values . valid_duration? ) . to eq true
headers = [ 't-sbel-q5' , 't-phys-q2' , 'Duration (in seconds)' ]
headers = teacher_survey_items
values = SurveyItemValues . new ( row : { 'Duration (in seconds)' = > '300' } , headers : , genders : , survey_items : ,
values = SurveyItemValues . new ( row : { 'Duration (in seconds)' = > '300' } , headers : , genders : , survey_items : ,
schools : )
schools : )
expect ( values . valid_duration? ) . to eq true
expect ( values . valid_duration? ) . to eq true
@ -139,15 +205,19 @@ RSpec.describe SurveyItemValues, type: :model do
context 'when duration is invalid' do
context 'when duration is invalid' do
it 'returns false' do
it 'returns false' do
headers = [ 's-sbel-q5' , 's-phys-q2' , 'RecordedDate' , 'Duration (in seconds)' ]
headers = standard_survey_items
values = SurveyItemValues . new ( row : { 'Duration (in seconds)' = > '239' } , headers : , genders : , survey_items : ,
values = SurveyItemValues . new ( row : { 'Duration (in seconds)' = > '239' } , headers : , genders : , survey_items : ,
schools : )
schools : )
expect ( values . valid_duration? ) . to eq false
expect ( values . valid_duration? ) . to eq false
headers = [ 't-sbel-q5' , 't-phys-q2' , 'Duration (in seconds)' ]
headers = teacher_survey_items
values = SurveyItemValues . new ( row : { 'Duration (in seconds)' = > '299' } , headers : , genders : , survey_items : ,
values = SurveyItemValues . new ( row : { 'Duration (in seconds)' = > '299' } , headers : , genders : , survey_items : ,
schools : )
schools : )
expect ( values . valid_duration? ) . to eq false
expect ( values . valid_duration? ) . to eq false
headers = short_form_survey_items
values = SurveyItemValues . new ( row : { 'Duration (in seconds)' = > '99' } , headers : , genders : , survey_items : ,
schools : )
expect ( values . valid_duration? ) . to eq false
end
end
end
end
end
end
@ -188,7 +258,7 @@ RSpec.describe SurveyItemValues, type: :model do
end
end
end
end
x context '.valid_grade?' do
context '.valid_grade?' do
context 'when grade is valid' do
context 'when grade is valid' do
before :each do
before :each do
attleboro
attleboro
@ -201,7 +271,7 @@ RSpec.describe SurveyItemValues, type: :model do
expect ( values . valid_grade? ) . to eq true
expect ( values . valid_grade? ) . to eq true
end
end
x it 'returns true for teachers' do
it 'returns true for teachers' do
headers = %w[ t-sbel-q5 t-phys-q2 grade RecordedDate ]
headers = %w[ t-sbel-q5 t-phys-q2 grade RecordedDate ]
values = SurveyItemValues . new ( row : { 'RecordedDate' = > recorded_date , 'Dese ID' = > '1234' } , headers : , genders : , survey_items : ,
values = SurveyItemValues . new ( row : { 'RecordedDate' = > recorded_date , 'Dese ID' = > '1234' } , headers : , genders : , survey_items : ,
schools : )
schools : )
@ -209,7 +279,7 @@ RSpec.describe SurveyItemValues, type: :model do
end
end
end
end
x context 'when grade is invalid' do
context 'when grade is invalid' do
before :each do
before :each do
attleboro
attleboro
attleboro_respondents
attleboro_respondents
@ -242,13 +312,13 @@ RSpec.describe SurveyItemValues, type: :model do
context 'when the standard deviation is invalid' do
context 'when the standard deviation is invalid' 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' = > '' , 's-phys-q 3 ' = > '1' } , headers : , genders : , survey_items : ,
values = SurveyItemValues . new ( row : { 'RecordedDate' = > recorded_date , 'Dese ID' = > '1234' , 's-sbel-q5' = > '1' , 's-phys-q2' = > '' , 's-phys-q 2 ' = > '1' } , headers : , genders : , survey_items : ,
schools : School . school_hash )
schools : School . school_hash )
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' = > '' , 't-phys-q 3 ' = > '1' } , headers : , genders : , survey_items : ,
values = SurveyItemValues . new ( row : { 'RecordedDate' = > recorded_date , 'Dese ID' = > '1234' , 't-sbel-q5' = > '1' , 't-phys-q2' = > '' , 't-phys-q 2 ' = > '1' } , headers : , genders : , survey_items : ,
schools : School . school_hash )
schools : School . school_hash )
expect ( values . valid_sd? ) . to eq false
expect ( values . valid_sd? ) . to eq false
end
end