From 4d5335491b0a67644e21bcc68bde7a38a60c2d9d Mon Sep 17 00:00:00 2001 From: Alex Basson Date: Fri, 1 Oct 2021 14:16:38 -0400 Subject: [PATCH] Inline the SurveyResponseAggregator --- app/controllers/dashboard_controller.rb | 19 ++--- app/services/survey_response_aggregator.rb | 16 ----- .../survey_response_aggregator_spec.rb | 70 ------------------- 3 files changed, 11 insertions(+), 94 deletions(-) delete mode 100644 app/services/survey_response_aggregator.rb delete mode 100644 spec/services/survey_response_aggregator_spec.rb diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index 3b141629..28ffba4b 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -6,31 +6,34 @@ class DashboardController < ApplicationController @measure_graph_row_presenters = measure_ids .map { |measure_id| Measure.find_by_measure_id measure_id } .map(&method(:presenter_for_measure)) - .sort().reverse + .sort + .reverse end private def measure_ids - Measure.all.map {|measure | - measure.measure_id - } + Measure.all.map(&:measure_id) end def presenter_for_measure(measure) + score = SurveyItemResponse.for_measure(measure) + .where(academic_year: academic_year, school: school) + .average(:likert_score) + MeasureGraphRowPresenter.new( measure: measure, - score: SurveyResponseAggregator.score(school: school, academic_year: academic_year, measure: measure) + score: score ) end def school - @school = schools.first if params[:school_id] == "first" + @school = schools.first if params[:school_id] == "first" @school ||= School.find_by_slug school_slug end def schools - @schools = School.where(district: district).sort_by { | school| school.name } + @schools = School.where(district: district).sort_by(&:name) end def district @@ -38,7 +41,7 @@ class DashboardController < ApplicationController end def districts - @districts = District.all.sort_by {|district| district.name} + @districts = District.all.sort_by(&:name) end def district_slug diff --git a/app/services/survey_response_aggregator.rb b/app/services/survey_response_aggregator.rb deleted file mode 100644 index 99ff53a8..00000000 --- a/app/services/survey_response_aggregator.rb +++ /dev/null @@ -1,16 +0,0 @@ -# TODO inline me pls -class SurveyResponseAggregator - # Returns an average score for all SurveyItemResponses for the given AcademicYear, School, and Measure - def self.score(academic_year:, school:, measure:) - SurveyItemResponse.for_measure(measure) - .where(academic_year: academic_year, school: school) - .average(:likert_score) - end - - # Returns an array of SurveyItemResponses for the given AcademicYear, School, and Measure - def self.find_responses_by_measure(academic_year:, school:, measure:) - SurveyItemResponse - .where(academic_year: academic_year, school: school) - .joins(:survey_item).where('survey_items.measure_id': measure.id) - end -end diff --git a/spec/services/survey_response_aggregator_spec.rb b/spec/services/survey_response_aggregator_spec.rb deleted file mode 100644 index 51c3fd8e..00000000 --- a/spec/services/survey_response_aggregator_spec.rb +++ /dev/null @@ -1,70 +0,0 @@ -require 'rails_helper' - -describe SurveyResponseAggregator do - let(:category) { SqmCategory.create } - let(:subcategory) { Subcategory.create sqm_category: category } - - let(:ay_2020_21) { AcademicYear.find_by_range '2020-21' } - let(:ay_2021_22) { AcademicYear.find_by_range '2021-22' } - - let(:school_a) { School.create name: 'School A' } - let(:school_b) { School.create name: 'School A' } - - let(:measure_a) { Measure.create subcategory: subcategory, name: 'Measure A', measure_id: 'measure-a-id', watch_low_benchmark: 1.1, growth_low_benchmark: 2, approval_low_benchmark: 3, ideal_low_benchmark: 4 } - let(:measure_b) { Measure.create subcategory: subcategory, name: 'Measure B', measure_id: 'measure-b-id', watch_low_benchmark: 1.1, growth_low_benchmark: 2, approval_low_benchmark: 3, ideal_low_benchmark: 4 } - - let(:survey_item_1_for_measure_a) { SurveyItem.create measure: measure_a, survey_item_id: 'si1a' } - let(:survey_item_2_for_measure_a) { SurveyItem.create measure: measure_a, survey_item_id: 'si2a' } - - let(:survey_item_1_for_measure_b) { SurveyItem.create measure: measure_b, survey_item_id: 'si1b' } - let(:survey_item_2_for_measure_b) { SurveyItem.create measure: measure_b, survey_item_id: 'si2b' } - - before :each do - SurveyItemResponse.create response_id: '01', academic_year: ay_2020_21, school: school_a, survey_item: survey_item_1_for_measure_a, likert_score: 1 - SurveyItemResponse.create response_id: '02', academic_year: ay_2020_21, school: school_a, survey_item: survey_item_2_for_measure_a, likert_score: 2 - - SurveyItemResponse.create response_id: '03', academic_year: ay_2020_21, school: school_a, survey_item: survey_item_1_for_measure_b, likert_score: 1 - SurveyItemResponse.create response_id: '04', academic_year: ay_2020_21, school: school_a, survey_item: survey_item_2_for_measure_b, likert_score: 3 - - SurveyItemResponse.create response_id: '05', academic_year: ay_2020_21, school: school_b, survey_item: survey_item_1_for_measure_a, likert_score: 1 - SurveyItemResponse.create response_id: '06', academic_year: ay_2020_21, school: school_b, survey_item: survey_item_2_for_measure_a, likert_score: 4 - - SurveyItemResponse.create response_id: '07', academic_year: ay_2020_21, school: school_b, survey_item: survey_item_1_for_measure_b, likert_score: 1 - SurveyItemResponse.create response_id: '08', academic_year: ay_2020_21, school: school_b, survey_item: survey_item_2_for_measure_b, likert_score: 5 - - SurveyItemResponse.create response_id: '09', academic_year: ay_2021_22, school: school_a, survey_item: survey_item_1_for_measure_a, likert_score: 2 - SurveyItemResponse.create response_id: '10', academic_year: ay_2021_22, school: school_a, survey_item: survey_item_2_for_measure_a, likert_score: 3 - - SurveyItemResponse.create response_id: '11', academic_year: ay_2021_22, school: school_a, survey_item: survey_item_1_for_measure_b, likert_score: 2 - SurveyItemResponse.create response_id: '12', academic_year: ay_2021_22, school: school_a, survey_item: survey_item_2_for_measure_b, likert_score: 4 - - SurveyItemResponse.create response_id: '13', academic_year: ay_2021_22, school: school_b, survey_item: survey_item_1_for_measure_a, likert_score: 2 - SurveyItemResponse.create response_id: '14', academic_year: ay_2021_22, school: school_b, survey_item: survey_item_2_for_measure_a, likert_score: 5 - - SurveyItemResponse.create response_id: '15', academic_year: ay_2021_22, school: school_b, survey_item: survey_item_1_for_measure_b, likert_score: 3 - SurveyItemResponse.create response_id: '16', academic_year: ay_2021_22, school: school_b, survey_item: survey_item_2_for_measure_b, likert_score: 5 - end - - describe '.score' do - it 'returns the average score of the survey responses for the given school, academic year, and measure' do - expect(SurveyResponseAggregator.score(academic_year: ay_2020_21, school: school_a, measure: measure_a)).to eq 1.5 - expect(SurveyResponseAggregator.score(academic_year: ay_2020_21, school: school_a, measure: measure_b)).to eq 2.0 - - expect(SurveyResponseAggregator.score(academic_year: ay_2020_21, school: school_b, measure: measure_a)).to eq 2.5 - expect(SurveyResponseAggregator.score(academic_year: ay_2020_21, school: school_b, measure: measure_b)).to eq 3.0 - - expect(SurveyResponseAggregator.score(academic_year: ay_2021_22, school: school_a, measure: measure_a)).to eq 2.5 - expect(SurveyResponseAggregator.score(academic_year: ay_2021_22, school: school_a, measure: measure_b)).to eq 3.0 - - expect(SurveyResponseAggregator.score(academic_year: ay_2021_22, school: school_b, measure: measure_a)).to eq 3.5 - expect(SurveyResponseAggregator.score(academic_year: ay_2021_22, school: school_b, measure: measure_b)).to eq 4.0 - end - end - - describe '.find_responses_by_measure' do - it 'returns all survey item responses corresponding to a year school and measure' do - expect(SurveyResponseAggregator.find_responses_by_measure(academic_year: ay_2020_21, school: school_a, measure: measure_a).count).to eq 2 - end - - end -end