mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 21:48:16 -08:00
Refactor GroupedBarColumnPresenter to accept a configuration so that a
column can by given on the fly (dependency injection). Show Parent graphs on analyze page.
This commit is contained in:
parent
86b0ac9bbf
commit
b9ba8abf73
83 changed files with 762 additions and 1925 deletions
|
|
@ -1,47 +0,0 @@
|
|||
require 'rails_helper'
|
||||
include Analyze::Graph::Column
|
||||
|
||||
describe AllAdmin do
|
||||
let(:measure_without_admin) { create(:measure) }
|
||||
let(:measure_with_admin) { create(:measure, :with_admin_data_items) }
|
||||
let(:school) { create(:school) }
|
||||
let(:academic_years) { [create(:academic_year)] }
|
||||
let(:position) { 1 }
|
||||
let(:number_of_columns) { 1 }
|
||||
|
||||
context '.show_irrelevancy_message?' do
|
||||
it 'returns true when the measure does NOT include admin data items' do
|
||||
expect(AllAdmin.new(measure: measure_without_admin, school:, academic_years:, position:,
|
||||
number_of_columns:).show_irrelevancy_message?).to eq true
|
||||
end
|
||||
|
||||
it 'returns false when the measure includes admin data items' do
|
||||
expect(AllAdmin.new(measure: measure_with_admin, school:, academic_years:, position:,
|
||||
number_of_columns:).show_irrelevancy_message?).to eq false
|
||||
end
|
||||
end
|
||||
|
||||
context '.show_insufficient_data_message?' do
|
||||
context 'when the measure DOES NOT include admin data items' do
|
||||
it 'returns true ' do
|
||||
expect(AllAdmin.new(measure: measure_without_admin, school:, academic_years:, position:,
|
||||
number_of_columns:).show_insufficient_data_message?).to eq true
|
||||
end
|
||||
|
||||
it 'returns true when the measure does include admin data items but there are not values assigned to the admin' do
|
||||
expect(AllAdmin.new(measure: measure_with_admin, school:, academic_years:, position:,
|
||||
number_of_columns:).show_insufficient_data_message?).to eq true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the measure Does include admin data items' do
|
||||
it 'and has at least one value to show, it will return false' do
|
||||
admin_data_item = measure_with_admin.scales.first.admin_data_items.first
|
||||
create(:admin_data_value, admin_data_item:, school:, academic_year: academic_years.first)
|
||||
|
||||
expect(AllAdmin.new(measure: measure_with_admin, school:, academic_years:, position:,
|
||||
number_of_columns:).show_insufficient_data_message?).to eq false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
require 'rails_helper'
|
||||
include Analyze::Graph
|
||||
include Analyze::Graph::Column::GenderColumn
|
||||
describe StudentsByRace do
|
||||
let(:female) { create(:gender, qualtrics_code: 1, designation: 'Female') }
|
||||
let(:school) { create(:school) }
|
||||
let(:academic_year) { create(:academic_year, range: '1900-01') }
|
||||
let(:academic_years) { [academic_year] }
|
||||
let(:year_index) { academic_years.find_index(academic_year) }
|
||||
|
||||
let(:measure_with_student_survey_items) { create(:measure, name: 'Student measure') }
|
||||
let(:scale_with_student_survey_item) { create(:student_scale, measure: measure_with_student_survey_items) }
|
||||
let(:student_survey_item) do
|
||||
create(:student_survey_item, scale: scale_with_student_survey_item)
|
||||
end
|
||||
|
||||
before do
|
||||
create_list(:survey_item_response, 1, survey_item: student_survey_item, school:, academic_year:, gender: female)
|
||||
end
|
||||
|
||||
context '.gender' do
|
||||
it 'returns female gender' do
|
||||
expect(Female.new(measure: measure_with_student_survey_items, school:, academic_years:, position: year_index,
|
||||
number_of_columns: 1).gender).to eq female
|
||||
end
|
||||
|
||||
it 'returns the count of survey items for females for that school and academic_year ' do
|
||||
female_column = Female.new(measure: measure_with_student_survey_items, school:, academic_years:, position: year_index,
|
||||
number_of_columns: 1)
|
||||
expect(female_column.sufficient_student_responses?(academic_year:)).to eq false
|
||||
end
|
||||
|
||||
context 'when there are more than 10 students who responded' do
|
||||
before do
|
||||
create_list(:survey_item_response, 10, survey_item: student_survey_item, school:, academic_year:,
|
||||
gender: female)
|
||||
end
|
||||
it 'returns the count of survey items for females for that school and academic_year ' do
|
||||
female_column = Female.new(measure: measure_with_student_survey_items, school:, academic_years:, position: year_index,
|
||||
number_of_columns: 1)
|
||||
expect(female_column.sufficient_student_responses?(academic_year:)).to eq true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,23 +1,23 @@
|
|||
require 'rails_helper'
|
||||
include Analyze::Graph
|
||||
include Analyze::Graph::Column
|
||||
include Analyze::Graph::Column::RaceColumn
|
||||
|
||||
describe StudentsByRace do
|
||||
let(:american_indian) { create(:race, qualtrics_code: 1) }
|
||||
let(:asian) { create(:race, qualtrics_code: 2) }
|
||||
let(:black) { create(:race, qualtrics_code: 3) }
|
||||
let(:hispanic) { create(:race, qualtrics_code: 4) }
|
||||
let(:white) { create(:race, qualtrics_code: 5) }
|
||||
let(:unknown) { create(:race, qualtrics_code: 99) }
|
||||
let(:multiracial) { create(:race, qualtrics_code: 100) }
|
||||
let(:american_indian) { create(:race, designation: "american indian", qualtrics_code: 1) }
|
||||
let(:asian) { create(:race, designation: "asian", qualtrics_code: 2) }
|
||||
let(:black) { create(:race, designation: "black", qualtrics_code: 3) }
|
||||
let(:hispanic) { create(:race, designation: "hispanic", qualtrics_code: 4) }
|
||||
let(:white) { create(:race, designation: "white", qualtrics_code: 5) }
|
||||
let(:unknown) { create(:race, designation: "unknown", qualtrics_code: 99) }
|
||||
let(:multiracial) { create(:race, designation: "multiracial", qualtrics_code: 100) }
|
||||
context 'when initialized with a list of races' do
|
||||
it 'generates corresponding race columns' do
|
||||
races = [american_indian]
|
||||
expect(StudentsByRace.new(races:).columns).to eq [AmericanIndian, AllStudent]
|
||||
expect(StudentsByRace.new(races:).columns.map(&:label).map { |words| words.join(" ") }).to eq ["american indian", "All Students"]
|
||||
races = [american_indian, asian]
|
||||
expect(StudentsByRace.new(races:).columns).to eq [AmericanIndian, Asian, AllStudent]
|
||||
expect(StudentsByRace.new(races:).columns.map(&:label).map { |words| words.join(" ") }).to eq ["american indian", "asian", "All Students"]
|
||||
races = [black, hispanic, multiracial]
|
||||
expect(StudentsByRace.new(races:).columns).to eq [Black, Hispanic, Multiracial, AllStudent]
|
||||
expect(StudentsByRace.new(races:).columns.map(&:label).map { |words| words.join(" ") }).to eq ["black", "hispanic", "multiracial", "All Students"]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -63,18 +63,18 @@ describe GroupedBarColumnPresenter do
|
|||
end
|
||||
|
||||
let(:student_presenter) do
|
||||
Analyze::Graph::Column::AllStudent.new measure: measure_with_student_survey_items, school:, academic_years:,
|
||||
position: 0, number_of_columns: 3
|
||||
GroupedBarColumnPresenter.new measure: measure_with_student_survey_items, school:, academic_years:,
|
||||
position: 0, number_of_columns: 3, config: Analyze::Graph::Column::AllStudent.new
|
||||
end
|
||||
|
||||
let(:teacher_presenter) do
|
||||
Analyze::Graph::Column::AllTeacher.new measure: measure_with_teacher_survey_items, school:, academic_years:,
|
||||
position: 0, number_of_columns: 3
|
||||
GroupedBarColumnPresenter.new measure: measure_with_teacher_survey_items, school:, academic_years:,
|
||||
position: 0, number_of_columns: 3, config: Analyze::Graph::Column::AllTeacher.new
|
||||
end
|
||||
|
||||
let(:all_data_presenter) do
|
||||
Analyze::Graph::Column::AllData.new measure: measure_composed_of_student_and_teacher_items, school:, academic_years:,
|
||||
position: 0, number_of_columns: 3
|
||||
GroupedBarColumnPresenter.new measure: measure_composed_of_student_and_teacher_items, school:, academic_years:,
|
||||
position: 0, number_of_columns: 3, config: Analyze::Graph::Column::AllData.new
|
||||
end
|
||||
|
||||
before do
|
||||
|
|
@ -120,8 +120,8 @@ describe GroupedBarColumnPresenter do
|
|||
end
|
||||
|
||||
it "returns a score that is an average of the likert scores " do
|
||||
expect(all_data_presenter.score(academic_year).average).to eq 4.5
|
||||
expect(all_data_presenter.score(another_academic_year).average).to eq nil
|
||||
expect(all_data_presenter.score(academic_year:).average).to eq 4.5
|
||||
expect(all_data_presenter.score(academic_year: another_academic_year).average).to eq nil
|
||||
expect(all_data_presenter.academic_years[0].range).to be academic_year.range
|
||||
expect(all_data_presenter.academic_years[1].range).to be another_academic_year.range
|
||||
end
|
||||
|
|
@ -133,8 +133,8 @@ describe GroupedBarColumnPresenter do
|
|||
academic_year: another_academic_year, likert_score: 3)
|
||||
end
|
||||
it "returns independent scores for each year of data" do
|
||||
expect(all_data_presenter.score(academic_year).average).to eq 4.5
|
||||
expect(all_data_presenter.score(another_academic_year).average).to eq 4
|
||||
expect(all_data_presenter.score(academic_year:).average).to eq 4.5
|
||||
expect(all_data_presenter.score(academic_year: another_academic_year).average).to eq 4
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -145,7 +145,7 @@ describe GroupedBarColumnPresenter do
|
|||
it_behaves_like "column_midpoint"
|
||||
|
||||
it "returns an emty score" do
|
||||
expect(student_presenter.score(academic_year).average).to eq nil
|
||||
expect(student_presenter.score(academic_year:).average).to eq nil
|
||||
end
|
||||
|
||||
it "shows the irrelevancy message " do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue