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.
101 lines
3.9 KiB
101 lines
3.9 KiB
require 'rails_helper'
|
|
|
|
describe 'overview/index' do
|
|
subject { Nokogiri::HTML(rendered) }
|
|
|
|
let(:support_for_teaching) do
|
|
measure = create(:measure, name: 'Support For Teaching Development & Growth', measure_id: '1')
|
|
create(:student_survey_item,
|
|
measure: measure,
|
|
watch_low_benchmark: 1.5,
|
|
growth_low_benchmark: 2.5,
|
|
approval_low_benchmark: 3.5,
|
|
ideal_low_benchmark: 4.5)
|
|
measure
|
|
end
|
|
|
|
let(:effective_leadership) do
|
|
measure = create(:measure, name: 'Effective Leadership', measure_id: '2')
|
|
create(:teacher_survey_item,
|
|
measure: measure,
|
|
watch_low_benchmark: 1.5,
|
|
growth_low_benchmark: 2.5,
|
|
approval_low_benchmark: 3.5,
|
|
ideal_low_benchmark: 4.5)
|
|
measure
|
|
end
|
|
|
|
let(:professional_qualifications) do
|
|
measure = create(:measure, name: 'Professional Qualifications', measure_id: '3')
|
|
create(:admin_data_item,
|
|
measure: measure,
|
|
watch_low_benchmark: 1.5,
|
|
growth_low_benchmark: 2.5,
|
|
approval_low_benchmark: 3.5,
|
|
ideal_low_benchmark: 4.5)
|
|
measure
|
|
end
|
|
|
|
before :each do
|
|
assign :category_presenters, []
|
|
assign :variance_chart_row_presenters, variance_chart_row_presenters
|
|
assign :academic_years, []
|
|
|
|
render
|
|
end
|
|
|
|
context 'when some presenters have a nil score' do
|
|
let(:variance_chart_row_presenters) do
|
|
[
|
|
VarianceChartRowPresenter.new(measure: support_for_teaching, score: Score.new),
|
|
VarianceChartRowPresenter.new(measure: effective_leadership, score: Score.new(rand)),
|
|
VarianceChartRowPresenter.new(measure: professional_qualifications, score: Score.new)
|
|
]
|
|
end
|
|
|
|
it 'displays a note detailing which measures have insufficient responses for the given school & academic year' do
|
|
expect(rendered).to match %r{Note: The following measures are not displayed due to limited availability of school admin data and/or low survey response rates: Support For Teaching Development & Growth; Professional Qualifications.}
|
|
end
|
|
|
|
it 'displays a variance row and label only those presenters for which the score is not nil' do
|
|
displayed_variance_rows = subject.css('[data-for-measure-id]')
|
|
expect(displayed_variance_rows.count).to eq 1
|
|
expect(displayed_variance_rows.first.attribute('data-for-measure-id').value).to eq '2'
|
|
|
|
displayed_variance_labels = subject.css('[data-variance-row-label]')
|
|
expect(displayed_variance_labels.count).to eq 1
|
|
expect(displayed_variance_labels.first.inner_text).to include 'Effective Leadership'
|
|
end
|
|
end
|
|
|
|
context 'when all the presenters have a non-nil score' do
|
|
let(:variance_chart_row_presenters) do
|
|
measure = create(:measure, name: 'Display Me', measure_id: 'display-me')
|
|
create(:student_survey_item,
|
|
measure: measure,
|
|
watch_low_benchmark: 1.5,
|
|
growth_low_benchmark: 2.5,
|
|
approval_low_benchmark: 3.5,
|
|
ideal_low_benchmark: 4.5)
|
|
[
|
|
VarianceChartRowPresenter.new(measure: measure,
|
|
score: Score.new(rand))
|
|
]
|
|
end
|
|
|
|
it 'does not display a note detailing which measures have insufficient responses for the given school & academic year' do
|
|
expect(rendered).not_to match %r{Note: The following measures are not displayed due to limited availability of school admin data and/or low survey response rates}
|
|
end
|
|
|
|
it 'displays a variance row for each presenter' do
|
|
displayed_variance_rows = subject.css('[data-for-measure-id]')
|
|
expect(displayed_variance_rows.count).to eq 1
|
|
expect(displayed_variance_rows.first.attribute('data-for-measure-id').value).to eq 'display-me'
|
|
|
|
displayed_variance_labels = subject.css('[data-variance-row-label]')
|
|
expect(displayed_variance_labels.count).to eq 1
|
|
expect(displayed_variance_labels.first.inner_text).to include 'Display Me'
|
|
end
|
|
end
|
|
end
|