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/system/journey_spec.rb

243 lines
9.2 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 AnalyzeHelper
describe "District Admin", js: true do
let(:district) { District.find_by_slug "lee-public-schools" }
let(:different_district) { District.find_by_slug "maynard-public-schools" }
let(:school) { School.find_by_slug "lee-elementary-school" }
let(:school_in_same_district) { School.find_by_slug "lee-middle-high-school" }
let(:first_school_in_wareham) { School.find_by_slug "fowler-school" }
let(:category) { Category.find_by_name("Teachers & Leadership") }
let(:different_category) { Category.find_by_name("School Culture") }
let(:subcategory) { Subcategory.find_by_name("Teachers & The Teaching Environment") }
let(:different_subcategory) { Subcategory.find_by_name("Relationships") }
let(:measures_for_subcategory) { Measure.where(subcategory:) }
let(:scales_for_subcategory) { Scale.where(measure: measures_for_subcategory) }
let(:survey_items_for_subcategory) { SurveyItem.where(scale: scales_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_2A_ii) { Measure.find_by_measure_id("2A-ii") }
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_items_for_measure_1A_i) { measure_1A_i.survey_items }
let(:survey_items_for_measure_2A_i) { measure_2A_i.survey_items }
let(:survey_items_for_measure_2A_ii) { measure_2A_ii.survey_items }
let(:survey_items_for_measure_4C_i) { measure_4C_i.survey_items }
let(:ay_2021_22) { AcademicYear.find_by_range "2021-22" }
let(:ay_2019_20) { AcademicYear.find_by_range "2019-20" }
let(:response_rates) do
[ay_2021_22, ay_2019_20].each do |academic_year|
[school, school_in_same_district, first_school_in_wareham].each do |school|
[subcategory, different_subcategory].each do |subcategory|
ResponseRate.create!(subcategory:, school:, academic_year:, student_response_rate: 100, teacher_response_rate: 100,
meets_student_threshold: true, meets_teacher_threshold: true)
end
end
end
end
let(:username) { district.short_name }
let(:password) { "#{district.short_name}!" }
let(:respondents) do
respondent = Respondent.find_or_initialize_by(school:, academic_year: ay_2021_22)
respondent.total_students = 8
respondent.total_teachers = 8
respondent.one = 20
respondent.save
respondent = Respondent.find_or_initialize_by(school:, academic_year: ay_2019_20)
respondent.total_students = 8
respondent.total_teachers = 8
respondent.one = 20
respondent.save
end
before :each do
Rails.application.load_seed
respondents
response_rates
survey_item_responses = []
survey_items_for_measure_1A_i.each do |survey_item|
SurveyItemResponse::TEACHER_RESPONSE_THRESHOLD.times do
survey_item_responses << SurveyItemResponse.new(response_id: rand.to_s, academic_year: ay_2021_22,
school:, survey_item:, likert_score: 4)
end
end
survey_items_for_measure_2A_i.each do |survey_item|
SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD.times do
survey_item_responses << SurveyItemResponse.new(response_id: rand.to_s, academic_year: ay_2021_22,
school:, survey_item:, likert_score: 5, grade: 1)
end
end
survey_items_for_measure_2A_ii.each do |survey_item|
SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD.times do
survey_item_responses << SurveyItemResponse.new(response_id: rand.to_s, academic_year: ay_2021_22,
school:, survey_item:, likert_score: 5, grade: 1)
end
end
survey_items_for_measure_4C_i.each do |survey_item|
SurveyItemResponse::TEACHER_RESPONSE_THRESHOLD.times do
survey_item_responses << SurveyItemResponse.new(response_id: rand.to_s, academic_year: ay_2021_22,
school:, survey_item:, likert_score: 1, grade: 1)
end
end
survey_items_for_subcategory.each do |survey_item|
2.times do
survey_item_responses << SurveyItemResponse.new(response_id: rand.to_s, academic_year: ay_2021_22,
school:, survey_item:, likert_score: 4, grade: 1)
end
end
SurveyItemResponse.import survey_item_responses
end
it "navigates through the site" do
page.driver.basic_authorize(username, password)
visit "/welcome"
expect(page).to have_text("Teachers & Leadership")
go_to_school_overview_from_welcome_page(district, school)
district_admin_sees_overview_content
click_on "Teachers & Leadership"
district_admin_sees_browse_content
click_on "Overview"
district_admin_sees_overview_content
click_on "Analyze"
district_admin_sees_analyze_content
go_to_different_category(different_category)
district_admin_sees_category_change
go_to_different_subcategory(different_subcategory)
district_admin_sees_subcategory_change
click_on "Browse"
district_admin_sees_browse_content
click_on "School Culture"
expect(page).to have_text("Measures the degree to which the school environment is safe, caring, and academically-oriented. It considers factors like bullying, student-teacher relationships, and student valuing of learning.")
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
go_to_different_year(ay_2019_20)
district_admin_sees_year_change
end
end
private
def district_admin_sees_professional_qualifications
expect(page).to have_text("Professional Qualifications")
expect(page).to have_css("[data-for-measure-id='1A-i']")
# TODO: cutpoints in source of truth have changed so the cutpoints have moved and '2.99%' is no longer a valid value for this cutpoint.
# expect(page).to have_css("[data-for-measure-id='1A-i'][width='2.99%'][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")
expect(page).to have_css("[data-for-measure-id='4C-i'][width='60.0%'][x='0.0%']")
end
def go_to_school_overview_from_welcome_page(district, school)
expect(page).to have_select("district", selected: "Select a District")
select district.name, from: "district-dropdown"
expect(page).to have_select("school", selected: "Select a School")
select school.name, from: "school-dropdown"
expect(page).to have_select("school", selected: "Lee Elementary School")
expect(page).to have_xpath("//a[@class='mx-4 btn btn-secondary'][.='Go' and not(@disabled='disabled')]")
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)
page.driver.basic_authorize(different_district.short_name, "#{different_district.short_name}!")
select district.name, from: "select-district"
end
def go_to_different_year(year)
select year.formatted_range, from: "select-academic-year"
end
def district_admin_sees_schools_change
expected_path = "/districts/#{school_in_same_district.district.slug}/schools/#{school_in_same_district.slug}/browse/teachers-and-leadership?year=#{ay_2021_22.range}"
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}/browse/teachers-and-leadership?year=#{ay_2021_22.range}"
expect(page).to have_current_path(expected_path)
end
def district_admin_sees_year_change
expected_path = "/districts/#{different_district.slug}/schools/#{different_district.schools.alphabetic.first.slug}/browse/teachers-and-leadership?year=2019-20"
expect(page).to have_current_path(expected_path)
end
def district_admin_sees_overview_content
expect(page).to have_select("academic-year", selected: "2021 2022")
expect(page).to have_select("district", selected: "Lee Public Schools")
expect(page).to have_select("school", selected: "Lee Elementary 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
page.assert_selector(".measure-row-bar", count: 6)
end
def district_admin_sees_browse_content
expect(page).to have_text("Teachers & Leadership")
expect(page).to have_text("Approval")
end
def district_admin_sees_analyze_content
expect(page).to have_text("1:Teachers & Leadership > 1A:Teachers & The Teaching Environment")
end
def go_to_different_category(category)
select category.name, from: "select-category"
end
def district_admin_sees_category_change
expect(page).to have_text "2A:Safety"
end
def go_to_different_subcategory(subcategory)
select subcategory.name, from: "select-subcategory"
end
def district_admin_sees_subcategory_change
expect(page).to have_text("Relationships")
end