51 lines
1.5 KiB
Ruby
51 lines
1.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "test_helper"
|
|
|
|
class SchoolYearTest < ActiveSupport::TestCase
|
|
test "factory" do
|
|
assert build(:school_year).validate!
|
|
end
|
|
|
|
test "name returns school name and year name" do
|
|
school_year = build(:school_year)
|
|
assert_equal "#{school_year.school_name} (#{school_year.year_name})", school_year.name
|
|
end
|
|
|
|
test "can be destroyed and cascades quarters" do
|
|
school_year = create(:school_year)
|
|
quarter_ids = school_year.quarters.pluck(:id)
|
|
assert_equal 4, quarter_ids.size
|
|
|
|
assert school_year.destroy
|
|
assert Quarter.where(id: quarter_ids).empty?
|
|
end
|
|
|
|
test "cannot be destroyed when classrooms exist" do
|
|
school_year = create(:school_year)
|
|
create(:classroom, school_year: school_year)
|
|
|
|
assert_not school_year.destroy
|
|
assert school_year.errors.added?(:base, "Cannot delete record because dependent classrooms exist")
|
|
end
|
|
|
|
test "cannot be destroyed when grade books exist" do
|
|
school_year = create(:school_year)
|
|
create(:classroom, school_year: school_year)
|
|
|
|
assert_not school_year.destroy
|
|
end
|
|
|
|
test "automatically creates 4 quarters when created" do
|
|
school = create(:school)
|
|
year = create(:year)
|
|
|
|
school_year = SchoolYear.create!(school: school, year: year)
|
|
|
|
assert_equal 4, school_year.quarters.count
|
|
assert_equal [1, 2, 3, 4], school_year.quarters.order(:number).pluck(:number)
|
|
assert_equal ["Quarter 1", "Quarter 2", "Quarter 3", "Quarter 4"],
|
|
school_year.quarters.order(:number).pluck(:name)
|
|
end
|
|
end
|