feat: Rename income labels to 'Economically Disadvantaged' and 'Not Economically Disadvantaged'

mciea-main
rebuilt 2 years ago
parent be1dd7cdff
commit 6db93cb116

@ -4,4 +4,15 @@ class Income < ApplicationRecord
include FriendlyId include FriendlyId
friendly_id :designation, use: [:slugged] friendly_id :designation, use: [:slugged]
def label
case designation
when "Economically Disadvantaged - Y"
"Economically Disadvantaged"
when "Economically Disadvantaged - N"
"Not Economically Disadvantaged"
when "Unknown"
"Unknown"
end
end
end end

@ -5,7 +5,7 @@ module Analyze
module Column module Column
class AllAdmin < GroupedBarColumnPresenter class AllAdmin < GroupedBarColumnPresenter
def label def label
"All Admin" %w[All Admin]
end end
def basis def basis

@ -5,7 +5,7 @@ module Analyze
module Column module Column
class AllStudent < GroupedBarColumnPresenter class AllStudent < GroupedBarColumnPresenter
def label def label
"All Students" %w[All Students]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -5,7 +5,7 @@ module Analyze
module Column module Column
class AllSurveyData < GroupedBarColumnPresenter class AllSurveyData < GroupedBarColumnPresenter
def label def label
"Survey Data" %w[Survey Data]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -5,7 +5,7 @@ module Analyze
module Column module Column
class AllTeacher < GroupedBarColumnPresenter class AllTeacher < GroupedBarColumnPresenter
def label def label
"All Teachers" %w[All Teachers]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::GenderColumn::ScoreForGender include Analyze::Graph::Column::GenderColumn::ScoreForGender
include Analyze::Graph::Column::GenderColumn::GenderCount include Analyze::Graph::Column::GenderColumn::GenderCount
def label def label
"Female" %w[Female]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::GenderColumn::ScoreForGender include Analyze::Graph::Column::GenderColumn::ScoreForGender
include Analyze::Graph::Column::GenderColumn::GenderCount include Analyze::Graph::Column::GenderColumn::GenderCount
def label def label
"Male" %w[Male]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::GenderColumn::ScoreForGender include Analyze::Graph::Column::GenderColumn::ScoreForGender
include Analyze::Graph::Column::GenderColumn::GenderCount include Analyze::Graph::Column::GenderColumn::GenderCount
def label def label
"Non-Binary" %w[Non-Binary]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::GenderColumn::ScoreForGender include Analyze::Graph::Column::GenderColumn::ScoreForGender
include Analyze::Graph::Column::GenderColumn::GenderCount include Analyze::Graph::Column::GenderColumn::GenderCount
def label def label
"Unknown" %w[Unknown]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 8" %w[Grade 8]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 11" %w[Grade 11]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 5" %w[Grade 5]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 4" %w[Grade 4]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 9" %w[Grade 9]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 1" %w[Grade 1]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 7" %w[Grade 7]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 6" %w[Grade 6]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 10" %w[Grade 10]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 3" %w[Grade 3]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 12" %w[Grade 12]
end end
def basis def basis

@ -5,12 +5,10 @@ module Analyze
module Column module Column
module Grade module Grade
class Two < GroupedBarColumnPresenter class Two < GroupedBarColumnPresenter
attr_reader :sufficient_responses
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Grade 2" %w[Grade 2]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::Grade::ScoreForGrade include Analyze::Graph::Column::Grade::ScoreForGrade
include Analyze::Graph::Column::Grade::GradeCount include Analyze::Graph::Column::Grade::GradeCount
def label def label
"Kindergarten" %w[Kindergarten]
end end
def basis def basis

@ -39,7 +39,7 @@ module Analyze
end end
def label def label
"All Data" %w[All Data]
end end
def basis def basis

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::IncomeColumn::ScoreForIncome include Analyze::Graph::Column::IncomeColumn::ScoreForIncome
include Analyze::Graph::Column::IncomeColumn::IncomeCount include Analyze::Graph::Column::IncomeColumn::IncomeCount
def label def label
"Economically Disadvantaged" %w[Economically Disadvantaged]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::IncomeColumn::ScoreForIncome include Analyze::Graph::Column::IncomeColumn::ScoreForIncome
include Analyze::Graph::Column::IncomeColumn::IncomeCount include Analyze::Graph::Column::IncomeColumn::IncomeCount
def label def label
"Not Disadvantaged" ["Not Economically", "Disadvantaged"]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::IncomeColumn::ScoreForIncome include Analyze::Graph::Column::IncomeColumn::ScoreForIncome
include Analyze::Graph::Column::IncomeColumn::IncomeCount include Analyze::Graph::Column::IncomeColumn::IncomeCount
def label def label
"Unknown" ["Unknown"]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::ScoreForRace include Analyze::Graph::Column::ScoreForRace
include Analyze::Graph::Column::RaceColumn::RaceCount include Analyze::Graph::Column::RaceColumn::RaceCount
def label def label
"American Indian" %w[American Indian]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::ScoreForRace include Analyze::Graph::Column::ScoreForRace
include Analyze::Graph::Column::RaceColumn::RaceCount include Analyze::Graph::Column::RaceColumn::RaceCount
def label def label
"Asian" %w[Asian]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::ScoreForRace include Analyze::Graph::Column::ScoreForRace
include Analyze::Graph::Column::RaceColumn::RaceCount include Analyze::Graph::Column::RaceColumn::RaceCount
def label def label
"Black" %w[Black]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::ScoreForRace include Analyze::Graph::Column::ScoreForRace
include Analyze::Graph::Column::RaceColumn::RaceCount include Analyze::Graph::Column::RaceColumn::RaceCount
def label def label
"Hispanic" %w[Hispanic]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -9,7 +9,7 @@ module Analyze
include Analyze::Graph::Column::RaceColumn::RaceCount include Analyze::Graph::Column::RaceColumn::RaceCount
def label def label
"Middle Eastern" %w[Middle Eastern]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::ScoreForRace include Analyze::Graph::Column::ScoreForRace
include Analyze::Graph::Column::RaceColumn::RaceCount include Analyze::Graph::Column::RaceColumn::RaceCount
def label def label
"Multiracial" %w[Multiracial]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::ScoreForRace include Analyze::Graph::Column::ScoreForRace
include Analyze::Graph::Column::RaceColumn::RaceCount include Analyze::Graph::Column::RaceColumn::RaceCount
def label def label
"Not Listed" %w[Not Listed]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -8,7 +8,7 @@ module Analyze
include Analyze::Graph::Column::ScoreForRace include Analyze::Graph::Column::ScoreForRace
include Analyze::Graph::Column::RaceColumn::RaceCount include Analyze::Graph::Column::RaceColumn::RaceCount
def label def label
"White" %w[White]
end end
def show_irrelevancy_message? def show_irrelevancy_message?

@ -110,7 +110,6 @@ class SurveyItemValues
@raw_income ||= disaggregation.income @raw_income ||= disaggregation.income
end end
# TODO: - rename these cases
def income def income
@income ||= value_from(pattern: /^Income$/i) @income ||= value_from(pattern: /^Income$/i)
return @income if @income.present? return @income if @income.present?
@ -234,4 +233,3 @@ class SurveyItemValues
end end
end end
end end

@ -19,5 +19,5 @@
<% end %> <% end %>
<% @presenter.incomes.each do |income| %> <% @presenter.incomes.each do |income| %>
<%= render(partial: "checkboxes", locals: {id: "income-#{income.slug}", item: income, selected_items: @presenter.selected_incomes, name: "income", label_text: income.designation}) %> <%= render(partial: "checkboxes", locals: {id: "income-#{income.slug}", item: income, selected_items: @presenter.selected_incomes, name: "income", label_text: income.label}) %>
<% end %> <% end %>

@ -25,7 +25,7 @@
<% end %> <% end %>
<line x1="<%= column.column_start_x %>%" y1="0" x2="<%= column.column_start_x %>%" y2="85%" stroke="grey" stroke-width="1" stroke-dasharray="5,2" /> <line x1="<%= column.column_start_x %>%" y1="0" x2="<%= column.column_start_x %>%" y2="85%" stroke="grey" stroke-width="1" stroke-dasharray="5,2" />
<% words = column.label.split("\s") %> <% words = column.label %>
<% words.each_with_index do | line, index | %> <% words.each_with_index do | line, index | %>
<text class="graph-footer" x="<%= column.column_midpoint %>%" y="<%= column.bar_label_height + (index * 5) %>%" text-anchor="middle" dominant-baseline="middle" data-grouped-bar-label="<%= column.label %>"> <text class="graph-footer" x="<%= column.column_midpoint %>%" y="<%= column.bar_label_height + (index * 5) %>%" text-anchor="middle" dominant-baseline="middle" data-grouped-bar-label="<%= column.label %>">
<%= line %> <%= line %>

@ -1,11 +1,11 @@
require 'rails_helper' require "rails_helper"
include AnalyzeHelper include AnalyzeHelper
include Analyze::Graph::Column include Analyze::Graph::Column
describe GroupedBarColumnPresenter do describe GroupedBarColumnPresenter do
let(:school) { create(:school) } let(:school) { create(:school) }
let(:academic_year) { create(:academic_year, range: '1900-01') } let(:academic_year) { create(:academic_year, range: "1900-01") }
let(:another_academic_year) { create(:academic_year, range: '2000-01') } let(:another_academic_year) { create(:academic_year, range: "2000-01") }
let(:academic_years) { [academic_year, another_academic_year] } let(:academic_years) { [academic_year, another_academic_year] }
let(:year_index) { academic_years.find_index(academic_year) } let(:year_index) { academic_years.find_index(academic_year) }
let(:watch_low_benchmark) { 2 } let(:watch_low_benchmark) { 2 }
@ -13,7 +13,7 @@ describe GroupedBarColumnPresenter do
let(:approval_low_benchmark) { 4 } let(:approval_low_benchmark) { 4 }
let(:ideal_low_benchmark) { 4.5 } let(:ideal_low_benchmark) { 4.5 }
let(:measure_with_student_survey_items) { create(:measure, name: 'Student measure') } let(:measure_with_student_survey_items) { create(:measure, name: "Student measure") }
let(:scale_with_student_survey_item) { create(:student_scale, measure: measure_with_student_survey_items) } let(:scale_with_student_survey_item) { create(:student_scale, measure: measure_with_student_survey_items) }
let(:student_survey_item) do let(:student_survey_item) do
create(:student_survey_item, scale: scale_with_student_survey_item, create(:student_survey_item, scale: scale_with_student_survey_item,
@ -23,7 +23,7 @@ describe GroupedBarColumnPresenter do
ideal_low_benchmark:) ideal_low_benchmark:)
end end
let(:measure_with_teacher_survey_items) { create(:measure, name: 'Teacher measure') } let(:measure_with_teacher_survey_items) { create(:measure, name: "Teacher measure") }
let(:scale_with_teacher_survey_item) { create(:teacher_scale, measure: measure_with_teacher_survey_items) } let(:scale_with_teacher_survey_item) { create(:teacher_scale, measure: measure_with_teacher_survey_items) }
let(:teacher_survey_item) do let(:teacher_survey_item) do
create(:teacher_survey_item, scale: scale_with_teacher_survey_item, create(:teacher_survey_item, scale: scale_with_teacher_survey_item,
@ -33,7 +33,7 @@ describe GroupedBarColumnPresenter do
ideal_low_benchmark:) ideal_low_benchmark:)
end end
let(:measure_composed_of_student_and_teacher_items) { create(:measure, name: 'Student and teacher measure') } let(:measure_composed_of_student_and_teacher_items) { create(:measure, name: "Student and teacher measure") }
let(:student_scale_for_composite_measure) do let(:student_scale_for_composite_measure) do
create(:student_scale, measure: measure_composed_of_student_and_teacher_items) create(:student_scale, measure: measure_composed_of_student_and_teacher_items)
end end
@ -58,7 +58,7 @@ describe GroupedBarColumnPresenter do
let(:measure_without_admin_data_items) do let(:measure_without_admin_data_items) do
create( create(
:measure, :measure,
name: 'Some Title' name: "Some Title"
) )
end end
@ -81,32 +81,32 @@ describe GroupedBarColumnPresenter do
create(:respondent, school:, academic_year:, total_students: 1, total_teachers: 1) create(:respondent, school:, academic_year:, total_students: 1, total_teachers: 1)
end end
shared_examples_for 'measure_name' do shared_examples_for "measure_name" do
it 'returns the measure name' do it "returns the measure name" do
expect(student_presenter.measure_name).to eq 'Student measure' expect(student_presenter.measure_name).to eq "Student measure"
end end
end end
shared_examples_for 'column_midpoint' do shared_examples_for "column_midpoint" do
it 'return an x position centered in the width of the column' do it "return an x position centered in the width of the column" do
expect(student_presenter.column_midpoint).to eq 29 expect(student_presenter.column_midpoint).to eq 29
end end
end end
shared_examples_for 'bar_color' do shared_examples_for "bar_color" do
it 'returns the correct color' do it "returns the correct color" do
expect(student_presenter.bars[year_index].color).to eq colors[year_index] expect(student_presenter.bars[year_index].color).to eq colors[year_index]
end end
end end
shared_examples_for 'y_offset' do shared_examples_for "y_offset" do
it 'bar will be based on the approval low benchmark boundary' do it "bar will be based on the approval low benchmark boundary" do
expect(student_presenter.bars[year_index].y_offset).to be_within(0.01).of(34) expect(student_presenter.bars[year_index].y_offset).to be_within(0.01).of(34)
end end
end end
context 'for a grouped column presenter with both student and teacher responses' do context "for a grouped column presenter with both student and teacher responses" do
context 'with a single year' context "with a single year"
before do before do
create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD,
survey_item: student_survey_item_for_composite_measure, survey_item: student_survey_item_for_composite_measure,
@ -119,49 +119,49 @@ describe GroupedBarColumnPresenter do
likert_score: 5) likert_score: 5)
end end
it 'returns a score that is an average of the likert scores ' do it "returns a score that is an average of the likert scores " do
expect(all_data_presenter.score(0).average).to eq 4.5 expect(all_data_presenter.score(0).average).to eq 4.5
expect(all_data_presenter.score(1).average).to eq nil expect(all_data_presenter.score(1).average).to eq nil
expect(all_data_presenter.academic_years[0].range).to be academic_year.range expect(all_data_presenter.academic_years[0].range).to be academic_year.range
expect(all_data_presenter.academic_years[1].range).to be another_academic_year.range expect(all_data_presenter.academic_years[1].range).to be another_academic_year.range
end end
context 'when more than one year exists' do context "when more than one year exists" do
before do before do
create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item_for_composite_measure, school:, create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item_for_composite_measure, school:,
academic_year: another_academic_year, likert_score: 5) academic_year: another_academic_year, likert_score: 5)
create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item_for_composite_measure, school:, create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item_for_composite_measure, school:,
academic_year: another_academic_year, likert_score: 3) academic_year: another_academic_year, likert_score: 3)
end end
it 'returns independent scores for each year of data' do it "returns independent scores for each year of data" do
expect(all_data_presenter.score(0).average).to eq 4.5 expect(all_data_presenter.score(0).average).to eq 4.5
expect(all_data_presenter.score(1).average).to eq 4 expect(all_data_presenter.score(1).average).to eq 4
end end
end end
end end
context 'when a measure is based on student survey items' do context "when a measure is based on student survey items" do
context 'when there is insufficient data to show a score' do context "when there is insufficient data to show a score" do
it_behaves_like 'measure_name' it_behaves_like "measure_name"
it_behaves_like 'column_midpoint' it_behaves_like "column_midpoint"
it 'returns an emtpy set of bars' do it "returns an emtpy set of bars" do
expect(student_presenter.bars).to eq [] expect(student_presenter.bars).to eq []
end end
it 'returns an emty score' do it "returns an emty score" do
expect(student_presenter.score(year_index).average).to eq nil expect(student_presenter.score(year_index).average).to eq nil
end end
it 'shows the irrelevancy message ' do it "shows the irrelevancy message " do
expect(student_presenter.show_irrelevancy_message?).to eq true expect(student_presenter.show_irrelevancy_message?).to eq true
end end
it 'shows the insufficient data message' do it "shows the insufficient data message" do
expect(student_presenter.show_insufficient_data_message?).to eq true expect(student_presenter.show_insufficient_data_message?).to eq true
end end
end end
context 'when the score is in the Ideal zone' do context "when the score is in the Ideal zone" do
before do before do
create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:, create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:,
academic_year:, likert_score: 5) academic_year:, likert_score: 5)
@ -169,39 +169,39 @@ describe GroupedBarColumnPresenter do
academic_year:, likert_score: 4) academic_year:, likert_score: 4)
end end
it_behaves_like 'measure_name' it_behaves_like "measure_name"
it_behaves_like 'column_midpoint' it_behaves_like "column_midpoint"
it_behaves_like 'bar_color' it_behaves_like "bar_color"
it 'returns a bar width equal to the approval zone width plus the proportionate ideal zone height' do it "returns a bar width equal to the approval zone width plus the proportionate ideal zone height" do
expect(student_presenter.bars[year_index].bar_height_percentage).to be_within(0.01).of(17) expect(student_presenter.bars[year_index].bar_height_percentage).to be_within(0.01).of(17)
end end
it 'returns a y_offset equal to the ' do it "returns a y_offset equal to the " do
expect(student_presenter.bars[0].y_offset).to be_within(0.01).of(17) expect(student_presenter.bars[0].y_offset).to be_within(0.01).of(17)
end end
it 'returns a text representation of the type of survey the bars are based on' do it "returns a text representation of the type of survey the bars are based on" do
expect(student_presenter.basis).to eq 'student surveys' expect(student_presenter.basis).to eq "student surveys"
end end
it 'returns only bars that have a numeric score' do it "returns only bars that have a numeric score" do
expect(student_presenter.bars.count).to be 1 expect(student_presenter.bars.count).to be 1
end end
it 'returns an explanatory bar label' do it "returns an explanatory bar label" do
expect(student_presenter.label).to eq 'All Students' expect(student_presenter.label).to eq %w[All Students]
end end
it 'does not show a message that the data source is irrelevant for this measure' do it "does not show a message that the data source is irrelevant for this measure" do
expect(student_presenter.show_irrelevancy_message?).to be false expect(student_presenter.show_irrelevancy_message?).to be false
end end
it 'does not show a message about insufficient responses' do it "does not show a message about insufficient responses" do
expect(student_presenter.show_insufficient_data_message?).to be false expect(student_presenter.show_insufficient_data_message?).to be false
end end
context 'when there is more than one years worth of data to show' do context "when there is more than one years worth of data to show" do
before do before do
create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:, create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:,
academic_year: another_academic_year, likert_score: 3) academic_year: another_academic_year, likert_score: 3)
@ -209,24 +209,24 @@ describe GroupedBarColumnPresenter do
academic_year: another_academic_year, likert_score: 4) academic_year: another_academic_year, likert_score: 4)
end end
it 'returns only bars that have a numeric score' do it "returns only bars that have a numeric score" do
expect(student_presenter.bars.count).to be 2 expect(student_presenter.bars.count).to be 2
end end
end end
end end
context 'when the score is in the Approval zone' do context "when the score is in the Approval zone" do
before do before do
create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:, create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:,
academic_year:, likert_score: 4) academic_year:, likert_score: 4)
end end
it_behaves_like 'measure_name' it_behaves_like "measure_name"
it_behaves_like 'column_midpoint' it_behaves_like "column_midpoint"
it_behaves_like 'bar_color' it_behaves_like "bar_color"
# it_behaves_like 'y_offset' # it_behaves_like 'y_offset'
context 'and the score is right at the approval low benchmark' do context "and the score is right at the approval low benchmark" do
it "where bar would normally have a height of 0, we inflate the height to be at least the minimum bar height of #{Analyze::BarPresenter::MINIMUM_BAR_HEIGHT}" do it "where bar would normally have a height of 0, we inflate the height to be at least the minimum bar height of #{Analyze::BarPresenter::MINIMUM_BAR_HEIGHT}" do
expect(student_presenter.bars[year_index].bar_height_percentage).to be_within(0.01).of(Analyze::BarPresenter::MINIMUM_BAR_HEIGHT) expect(student_presenter.bars[year_index].bar_height_percentage).to be_within(0.01).of(Analyze::BarPresenter::MINIMUM_BAR_HEIGHT)
end end
@ -236,22 +236,22 @@ describe GroupedBarColumnPresenter do
end end
end end
end end
context 'when the score is in the Growth zone' do context "when the score is in the Growth zone" do
before do before do
create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:, create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:,
academic_year:, likert_score: 3) academic_year:, likert_score: 3)
end end
it_behaves_like 'measure_name' it_behaves_like "measure_name"
it_behaves_like 'column_midpoint' it_behaves_like "column_midpoint"
it_behaves_like 'bar_color' it_behaves_like "bar_color"
it_behaves_like 'y_offset' it_behaves_like "y_offset"
it 'returns a bar width equal to the proportionate growth zone width' do it "returns a bar width equal to the proportionate growth zone width" do
expect(student_presenter.bars[year_index].bar_height_percentage).to be_within(0.01).of(17) expect(student_presenter.bars[year_index].bar_height_percentage).to be_within(0.01).of(17)
end end
context 'when the score is less than 5 percent away from the approval low benchmark line' do context "when the score is less than 5 percent away from the approval low benchmark line" do
before do before do
create_list(:survey_item_response, 80, survey_item: student_survey_item, school:, create_list(:survey_item_response, 80, survey_item: student_survey_item, school:,
academic_year:, likert_score: 4) academic_year:, likert_score: 4)
@ -263,51 +263,51 @@ describe GroupedBarColumnPresenter do
end end
end end
context 'when the score is in the Watch zone' do context "when the score is in the Watch zone" do
before do before do
create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:, create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:,
academic_year:, likert_score: 2) academic_year:, likert_score: 2)
end end
it_behaves_like 'measure_name' it_behaves_like "measure_name"
it_behaves_like 'column_midpoint' it_behaves_like "column_midpoint"
it_behaves_like 'bar_color' it_behaves_like "bar_color"
it_behaves_like 'y_offset' it_behaves_like "y_offset"
it 'returns a bar width equal to the proportionate watch zone width plus the growth zone width' do it "returns a bar width equal to the proportionate watch zone width plus the growth zone width" do
expect(student_presenter.bars[year_index].bar_height_percentage).to eq 34 expect(student_presenter.bars[year_index].bar_height_percentage).to eq 34
end end
end end
context 'when the score is in the Warning zone' do context "when the score is in the Warning zone" do
before do before do
create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:, create_list(:survey_item_response, SurveyItemResponse::STUDENT_RESPONSE_THRESHOLD, survey_item: student_survey_item, school:,
academic_year:, likert_score: 1) academic_year:, likert_score: 1)
end end
it_behaves_like 'measure_name' it_behaves_like "measure_name"
it_behaves_like 'column_midpoint' it_behaves_like "column_midpoint"
it_behaves_like 'bar_color' it_behaves_like "bar_color"
it_behaves_like 'y_offset' it_behaves_like "y_offset"
it 'returns a bar width equal to the proportionate warning zone width plus the watch & growth zone widths' do it "returns a bar width equal to the proportionate warning zone width plus the watch & growth zone widths" do
expect(student_presenter.bars[year_index].bar_height_percentage).to eq 51 expect(student_presenter.bars[year_index].bar_height_percentage).to eq 51
end end
end end
end end
context 'when the measure is based on teacher survey items' do context "when the measure is based on teacher survey items" do
context 'when there are insufficient responses to calculate a score' do context "when there are insufficient responses to calculate a score" do
it 'indicates it should show the insufficient data message' do it "indicates it should show the insufficient data message" do
expect(teacher_presenter.show_insufficient_data_message?).to eq true expect(teacher_presenter.show_insufficient_data_message?).to eq true
end end
end end
context 'when there are enough responses to calculate a score' do context "when there are enough responses to calculate a score" do
before do before do
create(:survey_item_response, survey_item: teacher_survey_item, school:, create(:survey_item_response, survey_item: teacher_survey_item, school:,
academic_year:) academic_year:)
end end
it 'indicates it should show the insufficient data message' do it "indicates it should show the insufficient data message" do
expect(teacher_presenter.show_insufficient_data_message?).to eq false expect(teacher_presenter.show_insufficient_data_message?).to eq false
end end
end end

Loading…
Cancel
Save