From eb6fde5f885e3debf24aba094f10e50a20acaa77 Mon Sep 17 00:00:00 2001 From: Nelson Jovel Date: Fri, 8 Nov 2024 15:56:56 -0800 Subject: [PATCH] fix: failing tests --- app/presenters/overview/overview_presenter.rb | 6 +- .../parent_response_rate_presenter.rb | 8 ++- app/presenters/response_rate_presenter.rb | 9 ++- .../student_response_rate_presenter.rb | 8 ++- .../teacher_response_rate_presenter.rb | 8 ++- .../response_rate_presenter_spec.rb | 32 +++++------ spec/views/overview/index.html.erb_spec.rb | 57 +++++++++---------- 7 files changed, 71 insertions(+), 57 deletions(-) diff --git a/app/presenters/overview/overview_presenter.rb b/app/presenters/overview/overview_presenter.rb index c30aa93e..6dc489c7 100644 --- a/app/presenters/overview/overview_presenter.rb +++ b/app/presenters/overview/overview_presenter.rb @@ -36,15 +36,15 @@ class Overview::OverviewPresenter end def student_response_rate_presenter - StudentResponseRatePresenter.new(focus: :student, school: @school, academic_year: @academic_year) + StudentResponseRatePresenter.new(school: @school, academic_year: @academic_year) end def teacher_response_rate_presenter - TeacherResponseRatePresenter.new(focus: :teacher, school: @school, academic_year: @academic_year) + TeacherResponseRatePresenter.new(school: @school, academic_year: @academic_year) end def parent_response_rate_presenter - ParentResponseRatePresenter.new(focus: :parent, school: @school, academic_year: @academic_year) + ParentResponseRatePresenter.new(school: @school, academic_year: @academic_year) end def presenter_for_measure(measure) diff --git a/app/presenters/parent_response_rate_presenter.rb b/app/presenters/parent_response_rate_presenter.rb index 65a41785..3c3ddaa0 100644 --- a/app/presenters/parent_response_rate_presenter.rb +++ b/app/presenters/parent_response_rate_presenter.rb @@ -1,6 +1,6 @@ class ParentResponseRatePresenter < ResponseRatePresenter - def initialize(focus:, academic_year:, school:) - super(focus:, academic_year:, school:) + def initialize(academic_year:, school:) + super(academic_year:, school:) @survey_items = SurveyItem.parent_survey_items if focus == :parent end @@ -17,4 +17,8 @@ class ParentResponseRatePresenter < ResponseRatePresenter respondents.total_students end + + def focus + "parent" + end end diff --git a/app/presenters/response_rate_presenter.rb b/app/presenters/response_rate_presenter.rb index fb3426e1..23113e41 100644 --- a/app/presenters/response_rate_presenter.rb +++ b/app/presenters/response_rate_presenter.rb @@ -1,8 +1,7 @@ class ResponseRatePresenter - attr_reader :focus, :academic_year, :school, :survey_items + attr_reader :academic_year, :school, :survey_items - def initialize(focus:, academic_year:, school:) - @focus = focus + def initialize(academic_year:, school:) @academic_year = academic_year @school = school end @@ -34,6 +33,10 @@ class ResponseRatePresenter "Percentages based on #{actual_count} out of #{respondents_count.round} #{focus}s completing at least 25% of the survey." end + def focus + raise "please implment method: focus" + end + private def cap_at_100(value) diff --git a/app/presenters/student_response_rate_presenter.rb b/app/presenters/student_response_rate_presenter.rb index 35bc6fcc..530528c6 100644 --- a/app/presenters/student_response_rate_presenter.rb +++ b/app/presenters/student_response_rate_presenter.rb @@ -1,6 +1,6 @@ class StudentResponseRatePresenter < ResponseRatePresenter - def initialize(focus:, academic_year:, school:) - super(focus:, academic_year:, school:) + def initialize(academic_year:, school:) + super(academic_year:, school:) @survey_items = Measure.all.flat_map do |measure| measure.student_survey_items_with_sufficient_responses(school:, academic_year:) end @@ -35,4 +35,8 @@ class StudentResponseRatePresenter < ResponseRatePresenter enrollment end + + def focus + "student" + end end diff --git a/app/presenters/teacher_response_rate_presenter.rb b/app/presenters/teacher_response_rate_presenter.rb index f82f26f6..2144cba8 100644 --- a/app/presenters/teacher_response_rate_presenter.rb +++ b/app/presenters/teacher_response_rate_presenter.rb @@ -1,6 +1,6 @@ class TeacherResponseRatePresenter < ResponseRatePresenter - def initialize(focus:, academic_year:, school:) - super(focus:, academic_year:, school:) + def initialize(academic_year:, school:) + super(academic_year:, school:) @survey_items = SurveyItem.teacher_survey_items end @@ -13,4 +13,8 @@ class TeacherResponseRatePresenter < ResponseRatePresenter respondents.total_teachers end + + def focus + "teacher" + end end diff --git a/spec/presenters/response_rate_presenter_spec.rb b/spec/presenters/response_rate_presenter_spec.rb index ebe3b0d6..d1c39546 100644 --- a/spec/presenters/response_rate_presenter_spec.rb +++ b/spec/presenters/response_rate_presenter_spec.rb @@ -57,7 +57,7 @@ describe ResponseRatePresenter do end it "ignores all teacher items and only gets the modified date of the last student item" do - date = ResponseRatePresenter.new(focus: :student, academic_year:, school:).date + date = StudentResponseRatePresenter.new(academic_year:, school:).date expect(date).to eq(newest_student_survey_response.recorded_date) end end @@ -70,7 +70,7 @@ describe ResponseRatePresenter do end it "ignores all student responses and only gets the modified date of the last teacher item" do - date = ResponseRatePresenter.new(focus: :teacher, academic_year:, school:).date + date = TeacherResponseRatePresenter.new(academic_year:, school:).date expect(date).to eq(newest_teacher_survey_response.recorded_date) end end @@ -83,7 +83,7 @@ describe ResponseRatePresenter do end context "when no survey responses are found for a school" do it "returns a response rate of 0" do - percentage = ResponseRatePresenter.new(focus: :teacher, academic_year:, school:).percentage + percentage = TeacherResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(0) end end @@ -95,7 +95,7 @@ describe ResponseRatePresenter do end it "returns a response rate of 100" do - percentage = ResponseRatePresenter.new(focus: :teacher, academic_year:, school:).percentage + percentage = TeacherResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(100) end end @@ -107,7 +107,7 @@ describe ResponseRatePresenter do end it "returns a response rate of 100" do - percentage = ResponseRatePresenter.new(focus: :teacher, academic_year:, school:).percentage + percentage = TeacherResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(100) end end @@ -119,7 +119,7 @@ describe ResponseRatePresenter do end it "returns a response rate of 75" do - percentage = ResponseRatePresenter.new(focus: :teacher, academic_year:, school:).percentage + percentage = TeacherResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(75) end end @@ -130,7 +130,7 @@ describe ResponseRatePresenter do end it "returns a response rate of 25" do - percentage = ResponseRatePresenter.new(focus: :teacher, academic_year:, school:).percentage + percentage = TeacherResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(25) end end @@ -141,7 +141,7 @@ describe ResponseRatePresenter do end it "its rounded to the nearest integer" do - percentage = ResponseRatePresenter.new(focus: :teacher, academic_year:, school:).percentage + percentage = TeacherResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(23) end end @@ -153,7 +153,7 @@ describe ResponseRatePresenter do end it "returns a response rate of 100" do - percentage = ResponseRatePresenter.new(focus: :student, academic_year:, school:).percentage + percentage = StudentResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(100) end end @@ -164,7 +164,7 @@ describe ResponseRatePresenter do end it "returns a response rate of 50" do - percentage = ResponseRatePresenter.new(focus: :student, academic_year:, school:).percentage + percentage = StudentResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(50) end end @@ -185,7 +185,7 @@ describe ResponseRatePresenter do survey_item: student_survey_item, grade: 1) end it "returns a response rate of 100" do - percentage = ResponseRatePresenter.new(focus: :student, academic_year:, school:).percentage + percentage = StudentResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(100) end end @@ -196,7 +196,7 @@ describe ResponseRatePresenter do survey_item: student_survey_item, grade: 1) end it "returns a response rate of 50" do - percentage = ResponseRatePresenter.new(focus: :student, academic_year:, school:).percentage + percentage = StudentResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(50) end end @@ -211,7 +211,7 @@ describe ResponseRatePresenter do survey_item: student_survey_item, grade: 2) end it "returns a response rate of 100" do - percentage = ResponseRatePresenter.new(focus: :student, academic_year:, school:).percentage + percentage = StudentResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(100) end end @@ -223,7 +223,7 @@ describe ResponseRatePresenter do survey_item: student_survey_item, grade: 2) end it "returns a response rate of 75" do - percentage = ResponseRatePresenter.new(focus: :student, academic_year:, school:).percentage + percentage = StudentResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(75) end end @@ -235,7 +235,7 @@ describe ResponseRatePresenter do survey_item: student_survey_item, grade: 2) end it "returns a response rate of 63 (rounded up from 62.5)" do - percentage = ResponseRatePresenter.new(focus: :student, academic_year:, school:).percentage + percentage = StudentResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(63) end end @@ -252,7 +252,7 @@ describe ResponseRatePresenter do survey_item: student_survey_item, grade: 3) end it "returns a response rate of 100" do - percentage = ResponseRatePresenter.new(focus: :student, academic_year:, school:).percentage + percentage = StudentResponseRatePresenter.new(academic_year:, school:).percentage expect(percentage).to eq(100) end end diff --git a/spec/views/overview/index.html.erb_spec.rb b/spec/views/overview/index.html.erb_spec.rb index 7663bbed..c71ad7b7 100644 --- a/spec/views/overview/index.html.erb_spec.rb +++ b/spec/views/overview/index.html.erb_spec.rb @@ -73,10 +73,10 @@ describe "overview/index" do 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) + @student_response_rate_presenter = StudentResponseRatePresenter.new(school: @school, + academic_year: @academic_year) + @teacher_response_rate_presenter = TeacherResponseRatePresenter.new(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, @@ -111,10 +111,10 @@ describe "overview/index" do 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) + @student_response_rate_presenter = StudentResponseRatePresenter.new(school: @school, + academic_year: @academic_year) + @teacher_response_rate_presenter = TeacherResponseRatePresenter.new(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, @@ -150,10 +150,10 @@ describe "overview/index" do 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) + @student_response_rate_presenter = StudentResponseRatePresenter.new(school: @school, + academic_year: @academic_year) + @teacher_response_rate_presenter = TeacherResponseRatePresenter.new(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, @@ -181,10 +181,10 @@ describe "overview/index" do 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) + @student_response_rate_presenter = StudentResponseRatePresenter.new(school: @school, + academic_year: @academic_year) + @teacher_response_rate_presenter = TeacherResponseRatePresenter.new(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, @@ -217,12 +217,12 @@ describe "overview/index" do assign :page, Overview::ParentOverviewPresenter.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) - @parent_response_rate_presenter = ResponseRatePresenter.new(focus: :parent, school: @school, - academic_year: @academic_year) + @student_response_rate_presenter = StudentResponseRatePresenter.new(school: @school, + academic_year: @academic_year) + @teacher_response_rate_presenter = TeacherResponseRatePresenter.new(school: @school, + academic_year: @academic_year) + @parent_response_rate_presenter = ParentResponseRatePresenter.new(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, @@ -249,13 +249,12 @@ describe "overview/index" do assign :page, Overview::ParentOverviewPresenter.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) - @parent_response_rate_presenter = ResponseRatePresenter.new(focus: :parent, school: @school, - academic_year: @academic_year) - + @student_response_rate_presenter = StudentResponseRatePresenter.new(school: @school, + academic_year: @academic_year) + @teacher_response_rate_presenter = TeacherResponseRatePresenter.new(school: @school, + academic_year: @academic_year) + @parent_response_rate_presenter = ParentResponseRatePresenter.new(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)