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.
72 lines
2.5 KiB
72 lines
2.5 KiB
require "rails_helper"
|
|
include VarianceHelper
|
|
|
|
describe "overview/_variance_chart.html.erb" do
|
|
before do
|
|
@academic_year = create(:academic_year)
|
|
@district = create(:district)
|
|
@school = create(:school)
|
|
end
|
|
|
|
context "When there are scores to show" do
|
|
subject { Nokogiri::HTML(rendered) }
|
|
|
|
let(:survey_items1) { [create(:student_survey_item)] }
|
|
let(:survey_items2) { [create(:student_survey_item)] }
|
|
let(:higher_scoring_measure) do
|
|
measure = create(:measure)
|
|
create(:scale, measure:, survey_items: survey_items1)
|
|
measure
|
|
end
|
|
|
|
let(:lower_scoring_measure) do
|
|
measure = create(:measure)
|
|
create(:scale, measure:, survey_items: survey_items2)
|
|
measure
|
|
end
|
|
|
|
before :each do
|
|
presenters = [
|
|
VarianceChartRowPresenter.new(measure: lower_scoring_measure, score: Score.new(average: 1)),
|
|
VarianceChartRowPresenter.new(measure: higher_scoring_measure, score: Score.new(average: 5))
|
|
]
|
|
|
|
render partial: "variance_chart", locals: { presenters: }
|
|
end
|
|
|
|
it "displays higher scoring measures above lower scoring measures" do
|
|
measure_row_bars = subject.css("rect.measure-row-bar")
|
|
|
|
higher_scoring_measure_index = measure_row_bars.find_index do |bar|
|
|
bar["data-for-measure-id"] == higher_scoring_measure.measure_id
|
|
end
|
|
lower_scoring_measure_index = measure_row_bars.find_index do |bar|
|
|
bar["data-for-measure-id"] == lower_scoring_measure.measure_id
|
|
end
|
|
|
|
expect(higher_scoring_measure_index).to be < lower_scoring_measure_index
|
|
end
|
|
end
|
|
|
|
context "When there are no scores to show for any measures" do
|
|
before :each do
|
|
measure_lacking_score = create(:measure)
|
|
another_measure_lacking_score = create(:measure)
|
|
presenters = [
|
|
VarianceChartRowPresenter.new(measure: measure_lacking_score, score: Score.new(average: nil)),
|
|
VarianceChartRowPresenter.new(measure: another_measure_lacking_score, score: Score.new(average: nil))
|
|
]
|
|
|
|
render partial: "variance_chart", locals: { presenters: }
|
|
end
|
|
|
|
it "displays the text 'insufficient data' for an empty dataset" do
|
|
expect(rendered).to have_text "Insufficient data"
|
|
end
|
|
|
|
it "does not display the partial data text: 'The following measures are not displayed due to limited availability of school data and/or low survey response rates:' " do
|
|
expect(rendered).not_to have_text "The following measures are not displayed due to limited availability of school data and/or low survey response rates:"
|
|
end
|
|
end
|
|
end
|