diff --git a/app/presenters/category_presenter.rb b/app/presenters/category_presenter.rb index df9c4698..5a11f359 100644 --- a/app/presenters/category_presenter.rb +++ b/app/presenters/category_presenter.rb @@ -66,6 +66,10 @@ class CategoryPresenter @category end + def show_parent_view?(school:, academic_year:) + subcategories(school:, academic_year:).any? { |subcategory| subcategory.show_scale_presenters? } + end + private def colors diff --git a/app/views/overview/index.html.erb b/app/views/overview/index.html.erb index 18ae7b75..5af0c143 100644 --- a/app/views/overview/index.html.erb +++ b/app/views/overview/index.html.erb @@ -14,7 +14,10 @@

School Quality Framework Indicators

<%= 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 %>
<%= render partial: "quality_framework_indicators", locals: { category_presenters: @category_presenters } %> diff --git a/spec/factories.rb b/spec/factories.rb index 28b34ece..7899d1c6 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -136,6 +136,9 @@ FactoryBot.define do factory :admin_scale do scale_id { "a-#{rand}" } end + factory :parent_scale do + scale_id { "p-#{rand}" } + end end factory :survey_item do @@ -163,6 +166,13 @@ FactoryBot.define do approval_low_benchmark { 4.0 } ideal_low_benchmark { 4.5 } 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 factory :survey_item_response do diff --git a/spec/views/overview/index.html.erb_spec.rb b/spec/views/overview/index.html.erb_spec.rb index a74ba6cd..efa8d6ce 100644 --- a/spec/views/overview/index.html.erb_spec.rb +++ b/spec/views/overview/index.html.erb_spec.rb @@ -136,88 +136,4 @@ describe "overview/index" do expect(displayed_variance_labels.first.inner_text).to include "Display Me" 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