You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sqm-dashboards/spec/models/sample_spec.rb

68 lines
2.7 KiB

require 'rails_helper'
RSpec.describe Sample, type: :model do
let(:american_indian) { Race.create(qualtrics_code: 1) }
let(:asian) { Race.create(qualtrics_code: 2) }
let(:black) { Race.create(qualtrics_code: 3) }
let(:latinx) { Race.create(qualtrics_code: 4) }
let(:white) { Race.create(qualtrics_code: 5) }
let(:middle_eastern) { Race.create(qualtrics_code: 8) }
let(:unknown) { Race.create(qualtrics_code: 99) }
let(:multiracial) { Race.create(qualtrics_code: 100) }
let(:races) { [american_indian, asian, black, latinx, white, middle_eastern, unknown, multiracial] }
let(:school) { create(:school) }
let(:academic_year) { create(:academic_year) }
let(:multiracial_student) do
student = create(:student)
student.races << american_indian
student.races << asian
student.races << multiracial
student
end
before :each do
7.times do |index|
student = create(:student)
student.races << races[index]
create(:survey_item_response, response_id: student.response_id, student:, school:, academic_year:)
end
end
describe '#count_all_students' do
context 'When called without params' do
it 'returns a count of all students' do
sample = Sample.new(slug: school.slug, range: academic_year.range)
expect(sample.count_all_students).to eq 7
end
end
end
describe '#count_students' do
context 'When called with a race param' do
context 'and there are no multirace students' do
it 'returns a count of the race passed in' do
sample = Sample.new(slug: school.slug, range: academic_year.range)
expect(sample.count_students(race: american_indian)).to eq 1
expect(sample.count_students(race: asian)).to eq 1
expect(sample.count_students(race: black)).to eq 1
expect(sample.count_students(race: latinx)).to eq 1
expect(sample.count_students(race: white)).to eq 1
expect(sample.count_students(race: middle_eastern)).to eq 1
expect(sample.count_students(race: unknown)).to eq 1
end
end
context 'when there are multirace students' do
before do
create(:survey_item_response, response_id: multiracial_student.response_id, student: multiracial_student,
school:, academic_year:)
end
it 'counts the student for all categories' do
sample = Sample.new(slug: school.slug, range: academic_year.range)
expect(sample.count_students(race: american_indian)).to eq 2
expect(sample.count_students(race: asian)).to eq 2
expect(sample.count_students(race: multiracial)).to eq 1
end
end
end
end
end