Exclude boston results. Completes #182117456

pull/1/head
Nelson Jovel 4 years ago
parent 4634282572
commit 57bfaa51c6

@ -38,3 +38,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Add deployment script for beta. Runs tests before deployment to Heroku's git server
- Add new set of student results for 2016-17
`bundle exec rake one_off:load_single_file`
- Exclude results from boston. Add foreign key from school to district
`bundle exec rake db:migrate`

@ -19,7 +19,8 @@ class StudentResponseRate
def response_count
@response_count ||= @subcategory.measures.map do |measure|
measure.student_survey_items.map do |survey_item|
survey_item.survey_item_responses.where(school: @school, academic_year: @academic_year).count
survey_item.survey_item_responses.where(school: @school,
academic_year: @academic_year).exclude_boston.count
end.sum
end.sum
end

@ -7,7 +7,8 @@ class SurveyItem < ActiveRecord::Base
def score(school:, academic_year:)
@score ||= Hash.new do |memo|
memo[[school, academic_year]] = survey_item_responses.where(school:, academic_year:).average(:likert_score).to_f
memo[[school, academic_year]] = survey_item_responses.where(school:,
academic_year:).exclude_boston.average(:likert_score).to_f
end
@score[[school, academic_year]]

@ -5,4 +5,9 @@ class SurveyItemResponse < ActiveRecord::Base
belongs_to :academic_year
belongs_to :school
belongs_to :survey_item
scope :exclude_boston, lambda {
boston = District.where(name: 'Boston').first
where.not(school: boston.schools) if boston.present?
}
end

@ -12,7 +12,8 @@ class TeacherResponseRate
def response_count
@response_count ||= @subcategory.measures.map do |measure|
measure.teacher_survey_items.map do |survey_item|
survey_item.survey_item_responses.where(school: @school, academic_year: @academic_year).count
survey_item.survey_item_responses.where(school: @school,
academic_year: @academic_year).exclude_boston.count
end.sum
end.sum
end

@ -0,0 +1,14 @@
<div id="empty-dataset-modal" class="modal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">No results available</h3>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p> Were unable to display results for the selected school and school year. </p>
<p> Youre welcome to <a target="_blank" href="https://www.mciea.org/contact.html">contact MCIEA</a> for more information</p>
</div>
</div>
</div>
</div>

@ -97,4 +97,8 @@
<%= render partial: "variance_chart", locals: { presenters: @variance_chart_row_presenters } %>
</div>
<%= render partial: 'layouts/empty_dataset_modal' if @has_empty_dataset %>
<% if @district == District.find_by_name("Boston") %>
<%= render partial: 'layouts/boston_modal' %>
<% elsif @has_empty_dataset %>
<%= render partial: 'layouts/empty_dataset_modal' %>
<% end %>

@ -0,0 +1,5 @@
class AddForeignKeyBetweenSchoolsAndDistricts < ActiveRecord::Migration[7.0]
def change
add_foreign_key :schools, :districts
end
end

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2022_05_03_180142) do
ActiveRecord::Schema[7.0].define(version: 2022_05_10_232626) do
# These are extensions that must be enabled in order to support this database
enable_extension "pg_stat_statements"
enable_extension "plpgsql"
@ -381,6 +381,7 @@ ActiveRecord::Schema[7.0].define(version: 2022_05_03_180142) do
add_foreign_key "respondents", "academic_years"
add_foreign_key "respondents", "schools"
add_foreign_key "scales", "measures"
add_foreign_key "schools", "districts"
add_foreign_key "subcategories", "categories"
add_foreign_key "survey_item_responses", "academic_years"
add_foreign_key "survey_item_responses", "schools"

@ -0,0 +1,24 @@
require 'rails_helper'
RSpec.describe SurveyItemResponse, type: :model do
let(:district) { create(:district) }
let(:boston) { create(:district, name: 'Boston') }
let(:school) { create(:school, district:) }
let(:boston_school) { create(:school, district: boston) }
let(:academic_year) { create(:academic_year) }
let(:survey_item) { create(:student_survey_item) }
before :each do
create(:survey_item_response, school:, survey_item:)
create(:survey_item_response, school: boston_school, survey_item:)
end
describe '.survey_item_responses' do
it 'includes all survey item responses' do
expect(survey_item.survey_item_responses.count).to eq 2
end
end
describe '.exclude_boston' do
it 'excludes survey item responses from boston schools' do
expect(survey_item.survey_item_responses.exclude_boston.count).to eq 1
end
end
end
Loading…
Cancel
Save