Add scales to framework. Change calculations to first group and then

average those groupings and the way up the framework.  Likert scores for
a survey_item are averaged.  Then all the survey_items in a scale are
averaged.  Then student scales in a measure are averaged.  And teacher
scales in a measure are averaged.  Then the average of those two
calculations becomes the score for a measure.  Then the measures in a
subcategory are averaged.
This commit is contained in:
rebuilt 2022-02-16 20:40:32 +01:00
parent 1ca88bf6d1
commit d4df7cbc06
44 changed files with 1053 additions and 856 deletions

View file

@ -5,8 +5,9 @@ describe 'overview/index' do
let(:support_for_teaching) do
measure = create(:measure, name: 'Support For Teaching Development & Growth', measure_id: '1')
scale = create(:scale, measure:)
create(:student_survey_item,
measure: measure,
scale:,
watch_low_benchmark: 1.5,
growth_low_benchmark: 2.5,
approval_low_benchmark: 3.5,
@ -16,8 +17,9 @@ describe 'overview/index' do
let(:effective_leadership) do
measure = create(:measure, name: 'Effective Leadership', measure_id: '2')
scale = create(:scale, measure:)
create(:teacher_survey_item,
measure: measure,
scale:,
watch_low_benchmark: 1.5,
growth_low_benchmark: 2.5,
approval_low_benchmark: 3.5,
@ -27,8 +29,9 @@ describe 'overview/index' do
let(:professional_qualifications) do
measure = create(:measure, name: 'Professional Qualifications', measure_id: '3')
scale = create(:scale, measure:)
create(:admin_data_item,
measure: measure,
scale:,
watch_low_benchmark: 1.5,
growth_low_benchmark: 2.5,
approval_low_benchmark: 3.5,
@ -71,14 +74,15 @@ describe 'overview/index' do
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')
scale = create(:scale, measure:)
create(:student_survey_item,
measure: measure,
scale:,
watch_low_benchmark: 1.5,
growth_low_benchmark: 2.5,
approval_low_benchmark: 3.5,
ideal_low_benchmark: 4.5)
[
VarianceChartRowPresenter.new(measure: measure,
VarianceChartRowPresenter.new(measure:,
score: Score.new(rand))
]
end

View file

@ -6,8 +6,17 @@ describe 'overview/_variance_chart.html.erb' do
let(:survey_items1) { [create(:student_survey_item)] }
let(:survey_items2) { [create(:student_survey_item)] }
let(:higher_scoring_measure) { create(:measure, survey_items: survey_items1) }
let(:lower_scoring_measure) { create(:measure, survey_items: survey_items2) }
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 = [
@ -15,7 +24,7 @@ describe 'overview/_variance_chart.html.erb' do
VarianceChartRowPresenter.new(measure: higher_scoring_measure, score: Score.new(5))
]
render partial: 'variance_chart', locals: { presenters: presenters }
render partial: 'variance_chart', locals: { presenters: }
end
it 'displays higher scoring measures above lower scoring measures' do
@ -41,7 +50,7 @@ describe 'overview/_variance_chart.html.erb' do
VarianceChartRowPresenter.new(measure: another_measure_lacking_score, score: Score.new(nil))
]
render partial: 'variance_chart', locals: { presenters: presenters }
render partial: 'variance_chart', locals: { presenters: }
end
it "displays the text 'insufficient data' for an empty dataset" do