mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 13:38:18 -08:00
initialized with a season, i.e. "2024-25 Fall". Update scapers for admin data, enrollment and staffing to use the new range standard correctly. Update the loaders for admin data, enrollment and staffing so that it populates all seasons in a given year. So admin data for 2024-25 gets loaded into "2024-25 Fall" and "2024-25 Spring". Add tests for the new range format. Set the default cutoff for the start of Spring season will be the last Sunday in February
116 lines
4 KiB
Ruby
116 lines
4 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe AcademicYear, type: :model do
|
|
describe ".find_by_date" do
|
|
context "when an academic year is not split into seasons" do
|
|
before do
|
|
create(:academic_year, range: "2022-23")
|
|
create(:academic_year, range: "2023-24")
|
|
create(:academic_year, range: "2024-25")
|
|
end
|
|
|
|
it "parses 2022-23 as the range" do
|
|
ranges = AcademicYear.by_range.keys
|
|
date = Date.parse("2022-12-12")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2022-23"
|
|
end
|
|
end
|
|
|
|
context "when an academic year is split into seasons" do
|
|
before do
|
|
create(:academic_year, range: "2021-22 Fall")
|
|
create(:academic_year, range: "2021-22 Spring")
|
|
create(:academic_year, range: "2022-23")
|
|
create(:academic_year, range: "2023-24 Fall")
|
|
create(:academic_year, range: "2023-24 Spring")
|
|
create(:academic_year, range: "2024-25")
|
|
end
|
|
|
|
context "and the range falls on an academic year without seasons" do
|
|
it "returns a range without the season added" do
|
|
ranges = AcademicYear.by_range.keys
|
|
|
|
# Start of 2022-23
|
|
date = Date.parse("2022-7-1")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2022-23"
|
|
|
|
# End of 2022-23
|
|
date = Date.parse("2023-6-30")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2022-23"
|
|
|
|
# Start of 2024-25
|
|
date = Date.parse("2024-7-1")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2024-25"
|
|
|
|
# End of 2024-25
|
|
date = Date.parse("2025-6-30")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2024-25"
|
|
end
|
|
end
|
|
context "and the range falls within an academic year with seasons" do
|
|
it "returns a range with the season added using the cutoff date of the last Sunday in February" do
|
|
ranges = AcademicYear.by_range.keys
|
|
|
|
# Start of Fall 2023-24
|
|
date = Date.parse("2023-7-1")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2023-24 Fall"
|
|
|
|
# End of Fall 2023-24
|
|
date = Date.parse("2024-2-24")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2023-24 Fall"
|
|
|
|
# Start of Spring 2023-24
|
|
date = Date.parse("2024-2-25")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2023-24 Spring"
|
|
|
|
# End of Spring 2023-24
|
|
date = Date.parse("2024-6-30")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2023-24 Spring"
|
|
|
|
# Start of Fall 2021-22
|
|
date = Date.parse("2021-7-1")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2021-22 Fall"
|
|
|
|
# End of Fall 2021-22
|
|
date = Date.parse("2022-2-26")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2021-22 Fall"
|
|
|
|
# Start of Spring 2021-22
|
|
date = Date.parse("2022-2-27")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2021-22 Spring"
|
|
|
|
# End of Spring 2021-22
|
|
date = Date.parse("2022-6-30")
|
|
expect(AcademicYear.range_from_date(date, ranges)).to eq "2021-22 Spring"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
describe ".range_without_season" do
|
|
context "when the range doesn't have a season " do
|
|
before do
|
|
create(:academic_year, range: "2022-23")
|
|
create(:academic_year, range: "2023-24")
|
|
create(:academic_year, range: "2024-25")
|
|
end
|
|
|
|
it "parses 2022-23 as the range" do
|
|
ay = AcademicYear.find_by_range "2022-23"
|
|
expect(ay.range_without_season).to eq "2022-23"
|
|
end
|
|
end
|
|
|
|
context "when an academic year is split into seasons" do
|
|
before do
|
|
create(:academic_year, range: "2023-24 Fall")
|
|
create(:academic_year, range: "2023-24 Spring")
|
|
end
|
|
|
|
it "removes the season from the range" do
|
|
ay = AcademicYear.find_by_range "2023-24 Fall"
|
|
expect(ay.range_without_season).to eq "2023-24"
|
|
end
|
|
end
|
|
end
|
|
end
|