feat: suppress parent view on overview page if the school didn't take the survey

rpp-main
Nelson Jovel 1 year ago
parent a45843fe8d
commit ce28a99dec

@ -66,6 +66,10 @@ class CategoryPresenter
@category @category
end end
def show_parent_view?(school:, academic_year:)
subcategories(school:, academic_year:).any? { |subcategory| subcategory.show_scale_presenters? }
end
private private
def colors def colors

@ -14,7 +14,10 @@
<div class="d-flex justify-content-between align-items-center"> <div class="d-flex justify-content-between align-items-center">
<h2 class="sub-header-2">School Quality Framework Indicators</h2> <h2 class="sub-header-2">School Quality Framework Indicators</h2>
<%= render partial: "harvey_ball_legend" %> <%= render partial: "harvey_ball_legend" %>
<%= render partial: "student_parent_toggle" %>
<% if @category_presenters.any? {|category_presenter| category_presenter.show_parent_view?(school: @school, academic_year: @academic_year) } %>
<%= render partial: "student_parent_toggle" %>
<% end %>
</div> </div>
<%= render partial: "quality_framework_indicators", locals: { category_presenters: @category_presenters } %> <%= render partial: "quality_framework_indicators", locals: { category_presenters: @category_presenters } %>

@ -136,6 +136,9 @@ FactoryBot.define do
factory :admin_scale do factory :admin_scale do
scale_id { "a-#{rand}" } scale_id { "a-#{rand}" }
end end
factory :parent_scale do
scale_id { "p-#{rand}" }
end
end end
factory :survey_item do factory :survey_item do
@ -163,6 +166,13 @@ FactoryBot.define do
approval_low_benchmark { 4.0 } approval_low_benchmark { 4.0 }
ideal_low_benchmark { 4.5 } ideal_low_benchmark { 4.5 }
end end
factory :parent_survey_item do
survey_item_id { "p-#{rand}" }
watch_low_benchmark { 2.0 }
growth_low_benchmark { 3.0 }
approval_low_benchmark { 4.0 }
ideal_low_benchmark { 4.5 }
end
end end
factory :survey_item_response do factory :survey_item_response do

@ -136,88 +136,4 @@ describe "overview/index" do
expect(displayed_variance_labels.first.inner_text).to include "Display Me" expect(displayed_variance_labels.first.inner_text).to include "Display Me"
end end
end end
context "when the default view is shown" 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,
scale:,
watch_low_benchmark: 1.5,
growth_low_benchmark: 2.5,
approval_low_benchmark: 3.5,
ideal_low_benchmark: 4.5)
[
Overview::VarianceChartRowPresenter.new(measure:,
score: Score.new(average: rand))
]
end
before :each do
assign :category_presenters, []
assign :variance_chart_row_presenters, variance_chart_row_presenters
@academic_year = create(:academic_year)
assign :academic_years, [@academic_year]
@district = create(:district)
@school = create(:school)
assign :page,
Overview::OverviewPresenter.new(params: { view: "student" }, school: @school,
academic_year: @academic_year)
@student_response_rate_presenter = ResponseRatePresenter.new(focus: :student, school: @school,
academic_year: @academic_year)
@teacher_response_rate_presenter = ResponseRatePresenter.new(focus: :teacher, school: @school,
academic_year: @academic_year)
Respondent.create!(school: @school, academic_year: @academic_year, total_students: 40, total_teachers: 40)
ResponseRate.create!(subcategory: Subcategory.first, school: @school, academic_year: @academic_year,
student_response_rate: 100, teacher_response_rate: 100, meets_student_threshold: true, meets_teacher_threshold: true)
render
end
it "shows the view with the students & teachers button active" do
expect(subject.css("input[id='student_and_teacher_btn'][checked='checked']").count).to eq 1
end
end
context "when the parent view is shown" 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,
scale:,
watch_low_benchmark: 1.5,
growth_low_benchmark: 2.5,
approval_low_benchmark: 3.5,
ideal_low_benchmark: 4.5)
[
Overview::VarianceChartRowPresenter.new(measure:,
score: Score.new(average: rand))
]
end
before :each do
assign :category_presenters, []
assign :variance_chart_row_presenters, variance_chart_row_presenters
@academic_year = create(:academic_year)
assign :academic_years, [@academic_year]
@district = create(:district)
@school = create(:school)
assign :page,
Overview::OverviewPresenter.new(params: { view: "parent" }, school: @school,
academic_year: @academic_year)
@student_response_rate_presenter = ResponseRatePresenter.new(focus: :student, school: @school,
academic_year: @academic_year)
@teacher_response_rate_presenter = ResponseRatePresenter.new(focus: :teacher, school: @school,
academic_year: @academic_year)
Respondent.create!(school: @school, academic_year: @academic_year, total_students: 40, total_teachers: 40)
ResponseRate.create!(subcategory: Subcategory.first, school: @school, academic_year: @academic_year,
student_response_rate: 100, teacher_response_rate: 100, meets_student_threshold: true, meets_teacher_threshold: true)
render
end
it "shows the view with the students & teachers button active" do
expect(subject.css("input[id='parent_btn'][checked='checked']").count).to eq 1
end
end
end end

Loading…
Cancel
Save