You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sqm-dashboards/spec/features/school_dashboard_feature_sp...

234 lines
9.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

require 'rails_helper'
# include Rails.application.routes.url_helpers
def district_admin_sees_professional_qualifications
expect(page).to have_text('Professional Qualifications')
expect(page).to have_css("[data-for-measure-id='1A-i'][width='8.26%'][x='60%']")
end
def district_admin_sees_student_physical_safety
expect(page).to have_text('Student Physical Safety')
expect(page).to have_css("[data-for-measure-id='2A-i'][width='40.0%'][x='60%']")
end
def district_admin_sees_problem_solving_emphasis
expect(page).to have_text('Problem Solving Emphasis')
expect(page).to have_css("[data-for-measure-id='4C-i'][width='60.0%'][x='0.0%']")
end
def go_to_school_dashboard_from_welcome_page(district, school)
select district.name, from: 'district-dropdown'
select school.name, from: 'school-dropdown'
click_on 'Go'
end
def go_to_different_school_in_same_district(school)
select school.name, from: 'select-school'
end
def go_to_different_district(district)
select district.name, from: 'select-district'
end
def district_admin_sees_schools_change
expected_path = "/districts/#{school_in_same_district.district.slug}/schools/#{school_in_same_district.slug}/dashboard?year=2020-21"
expect(page).to have_current_path(expected_path)
end
def district_admin_sees_district_change
expected_path = "/districts/#{different_district.slug}/schools/#{different_district.schools.alphabetic.first.slug}/dashboard?year=2020-21"
expect(page).to have_current_path(expected_path)
end
def district_admin_sees_measures_in_correct_order
def index_of_row_for(measure_id:)
expect(page).to have_css("[data-for-measure-id='#{measure_id}']")
page.all('rect.measure-row-bar').find_index { |item| item['data-for-measure-id'] == "#{measure_id}" }
end
expect(index_of_row_for(measure_id: '2A-i')).to be < index_of_row_for(measure_id: '1A-i')
expect(index_of_row_for(measure_id: '1A-i')).to be < index_of_row_for(measure_id: '4C-i')
end
def district_admin_sees_dashboard_content
expect(page).to have_select('academic-year', selected: '2020 2021')
expect(page).to have_select('district', selected: 'Winchester')
expect(page).to have_select('school', selected: 'Winchester High School')
expect(page).to have_text(school.name)
district_admin_sees_professional_qualifications
district_admin_sees_student_physical_safety
district_admin_sees_problem_solving_emphasis
expect(page).to have_css("[data-for-measure-id='3A-i'][width='0.0%']")
page.assert_selector('.measure-row-bar', count: Measure.count)
district_admin_sees_measures_in_correct_order
end
def district_admin_sees_browse_content
expect(page).to have_text('Teachers & Leadership')
expect(page).to have_text('Approval')
end
feature 'School dashboard', type: feature do
let(:district) { District.find_by_slug 'winchester' }
let(:different_district) { District.find_by_slug 'boston' }
let(:school) { School.find_by_slug 'winchester-high-school' }
let(:school_in_same_district) { School.find_by_slug 'muraco-elementary-school' }
let(:category) { SqmCategory.find_by_name('Teachers & Leadership') }
let(:subcategory) { Subcategory.find_by_name('Teachers & The Teaching Environment') }
let(:measures_for_subcategory) { Measure.where(subcategory: subcategory) }
let(:survey_items_for_subcategory) { SurveyItem.where(measure: measures_for_subcategory) }
let(:measure_1A_i) { Measure.find_by_measure_id('1A-i') }
let(:measure_2A_i) { Measure.find_by_measure_id('2A-i') }
let(:measure_4C_i) { Measure.find_by_measure_id('4C-i') }
let(:measure_with_no_survey_responses) { Measure.find_by_measure_id('3A-i') }
let(:survey_item_1_for_measure_1A_i) { SurveyItem.create measure: measure_1A_i, survey_item_id: rand.to_s }
let(:survey_item_2_for_measure_1A_i) { SurveyItem.create measure: measure_1A_i, survey_item_id: rand.to_s }
let(:survey_items_for_measure_1A_i) { SurveyItem.where(measure: measure_1A_i) }
let(:survey_items_for_measure_2A_i) { SurveyItem.where(measure: measure_2A_i) }
let(:survey_items_for_measure_4C_i) { SurveyItem.where(measure: measure_4C_i) }
let(:ay_2020_21) { AcademicYear.find_by_range '2020-21' }
let(:username) { 'winchester' }
let(:password) { 'winchester!' }
before :each do
survey_items_for_measure_1A_i.each do |survey_item|
SurveyItemResponse.create response_id: rand.to_s, academic_year: ay_2020_21, school: school,
survey_item: survey_item, likert_score: 4
end
survey_items_for_measure_2A_i.each do |survey_item|
SurveyItemResponse.create response_id: rand.to_s, academic_year: ay_2020_21, school: school,
survey_item: survey_item, likert_score: 5
end
survey_items_for_measure_4C_i.each do |survey_item|
SurveyItemResponse.create response_id: rand.to_s, academic_year: ay_2020_21, school: school,
survey_item: survey_item, likert_score: 1
end
survey_items_for_subcategory.each do |survey_item|
SurveyItemResponse.create response_id: rand.to_s, academic_year: ay_2020_21, school: school,
survey_item: survey_item, likert_score: 4
end
end
scenario 'User authentication fails' do
page.driver.browser.basic_authorize('wrong username', 'wrong password')
visit "/districts/#{district.slug}/schools/#{school.slug}/dashboard?year=2020-21"
expect(page).not_to have_text(school.name)
end
scenario 'District Admin navigates the site', js: true do
page.driver.basic_authorize(username, password)
visit '/welcome'
go_to_school_dashboard_from_welcome_page(district, school)
district_admin_sees_dashboard_content
go_to_different_school_in_same_district(school_in_same_district)
district_admin_sees_schools_change
go_to_different_district(different_district)
district_admin_sees_district_change
end
scenario 'District Admin views a school dashboard' do
page.driver.browser.basic_authorize(username, password)
visit "/districts/#{district.slug}/schools/#{school.slug}/dashboard?year=#{ay_2020_21.range}"
district_admin_sees_dashboard_content
click_on 'View Details', match: :first
district_admin_sees_browse_content
click_on 'Dashboard'
district_admin_sees_dashboard_content
click_on 'Browse'
district_admin_sees_browse_content
click_on 'School Culture'
expect(page).to have_text('This category measures the degree to which the school environment is safe, caring, and academically-oriented.')
end
scenario 'user sees schools in the same district' do
page.driver.browser.basic_authorize(username, password)
visit "/districts/#{district.slug}/schools/#{school.slug}/dashboard?year=#{ay_2020_21.range}"
expected_num_of_schools = district.schools.count
expect(page.all('.school-options').count).to eq expected_num_of_schools
expect(page.all('.school-options[selected]').count).to eq 1
expect(page.all('.school-options[selected]')[0].text).to eq 'Winchester High School'
expect(page.all('.school-options[selected]')[0].value).to eq "/districts/#{district.slug}/schools/#{school.slug}/dashboard?year=#{ay_2020_21.range}"
school_options = page.all('.school-options')
school_options.each_with_index do |school, index|
break if index == school_options.length - 1
expect(school.text).to be < school_options[index + 1].text
end
visit "/districts/#{district.slug}/schools/#{school.slug}/browse/teachers-and-leadership?year=#{ay_2020_21.range}"
expected_num_of_schools = district.schools.count
expect(page.all('.school-options').count).to eq expected_num_of_schools
expect(page.all('.school-options[selected]').count).to eq 1
expect(page.all('.school-options[selected]')[0].text).to eq 'Winchester High School'
expect(page.all('.school-options[selected]')[0].value).to eq "/districts/#{district.slug}/schools/#{school.slug}/browse/teachers-and-leadership?year=#{ay_2020_21.range}"
school_options = page.all('.school-options')
school_options.each_with_index do |school, index|
break if index == school_options.length - 1
expect(school.text).to be < school_options[index + 1].text
end
end
scenario 'user sees all districts in dropdown menu' do
page.driver.browser.basic_authorize(username, password)
visit "/districts/#{district.slug}/schools/#{school.slug}/dashboard?year=#{ay_2020_21.range}"
expected_num_of_districts = District.count
expect(page.all('.district-options').count).to eq expected_num_of_districts
expect(page.all('.district-options[selected]').count).to eq 1
expect(page.all('.district-options[selected]')[0].text).to eq 'Winchester'
expect(page.all('.district-options[selected]')[0].value).to eq "/districts/#{district.slug}/schools/#{district.schools.alphabetic.first.slug}/dashboard?year=#{ay_2020_21.range}"
district_options = page.all('.district-options')
district_options.each_with_index do |district, index|
break if index == district_options.length - 1
expect(district.text).to be < district_options[index + 1].text
end
visit "/districts/#{district.slug}/schools/#{school.slug}/browse/teachers-and-leadership?year=#{ay_2020_21.range}"
expected_num_of_districts = District.count
expect(page.all('.district-options').count).to eq expected_num_of_districts
expect(page.all('.district-options[selected]').count).to eq 1
expect(page.all('.district-options[selected]')[0].text).to eq 'Winchester'
expect(page.all('.district-options[selected]')[0].value).to eq "/districts/#{district.slug}/schools/#{district.schools.alphabetic.first.slug}/browse/teachers-and-leadership?year=#{ay_2020_21.range}"
district_options = page.all('.district-options')
district_options.each_with_index do |district, index|
break if index == district_options.length - 1
expect(district.text).to be < district_options[index + 1].text
end
end
end