chore: init commit
in worker.../repo/GITFOLDER.zip is the .git folder.
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "test_helper"
|
||||
|
||||
class SchoolTest < ActiveSupport::TestCase
|
||||
# Factory validation
|
||||
test "factory is valid" do
|
||||
school = build(:school)
|
||||
assert school.valid?
|
||||
end
|
||||
|
||||
# Validation tests
|
||||
test "is valid with valid attributes" do
|
||||
school = build(:school, name: "Test School")
|
||||
assert school.valid?
|
||||
end
|
||||
|
||||
test "is invalid without a name" do
|
||||
school = build(:school, name: nil)
|
||||
assert_not school.valid?
|
||||
assert_includes school.errors[:name], "can't be blank"
|
||||
end
|
||||
|
||||
test "is invalid with an empty name" do
|
||||
school = build(:school, name: "")
|
||||
assert_not school.valid?
|
||||
assert_includes school.errors[:name], "can't be blank"
|
||||
end
|
||||
|
||||
test "is invalid with a name containing only whitespace" do
|
||||
school = build(:school, name: " ")
|
||||
assert_not school.valid?
|
||||
assert_includes school.errors[:name], "can't be blank"
|
||||
end
|
||||
|
||||
# Association tests
|
||||
test "has many school_years" do
|
||||
school = create(:school)
|
||||
assert_respond_to school, :school_years
|
||||
end
|
||||
|
||||
test "has many years through school_years" do
|
||||
school = create(:school)
|
||||
assert_respond_to school, :years
|
||||
end
|
||||
|
||||
test "can have multiple school_years" do
|
||||
school = create(:school)
|
||||
year1 = create(:year, name: "2024")
|
||||
year2 = create(:year, name: "2025")
|
||||
|
||||
school_year1 = create(:school_year, school: school, year: year1)
|
||||
school_year2 = create(:school_year, school: school, year: year2)
|
||||
|
||||
assert_equal 2, school.school_years.count
|
||||
assert_includes school.school_years, school_year1
|
||||
assert_includes school.school_years, school_year2
|
||||
end
|
||||
|
||||
test "can access years through school_years association" do
|
||||
school = create(:school)
|
||||
year1 = create(:year, name: "2024")
|
||||
year2 = create(:year, name: "2025")
|
||||
|
||||
create(:school_year, school: school, year: year1)
|
||||
create(:school_year, school: school, year: year2)
|
||||
|
||||
assert_equal 2, school.years.count
|
||||
assert_includes school.years, year1
|
||||
assert_includes school.years, year2
|
||||
end
|
||||
|
||||
# Dependent restrict_with_error tests
|
||||
test "cannot be destroyed when it has associated school_years" do
|
||||
school = create(:school)
|
||||
year = create(:year)
|
||||
create(:school_year, school: school, year: year)
|
||||
|
||||
assert_not school.destroy
|
||||
assert_includes school.errors[:base], "Cannot delete record because dependent school years exist"
|
||||
end
|
||||
|
||||
test "can be destroyed when it has no associated school_years" do
|
||||
school = create(:school)
|
||||
|
||||
assert_difference("School.count", -1) do
|
||||
school.destroy!
|
||||
end
|
||||
end
|
||||
|
||||
# Edge cases
|
||||
test "allows duplicate names" do
|
||||
create(:school, name: "Test School")
|
||||
duplicate_school = build(:school, name: "Test School")
|
||||
|
||||
assert duplicate_school.valid?
|
||||
end
|
||||
|
||||
test "name can contain special characters" do
|
||||
school = build(:school, name: "St. Mary's School & Academy")
|
||||
assert school.valid?
|
||||
end
|
||||
|
||||
test "name can contain numbers" do
|
||||
school = build(:school, name: "PS 123")
|
||||
assert school.valid?
|
||||
end
|
||||
|
||||
test "name can be very long" do
|
||||
long_name = "A" * 255
|
||||
school = build(:school, name: long_name)
|
||||
assert school.valid?
|
||||
end
|
||||
|
||||
# Persistence tests
|
||||
test "persists name correctly" do
|
||||
school = create(:school, name: "Persisted School")
|
||||
reloaded_school = School.find(school.id)
|
||||
|
||||
assert_equal "Persisted School", reloaded_school.name
|
||||
end
|
||||
|
||||
test "updates name correctly" do
|
||||
school = create(:school, name: "Original Name")
|
||||
school.update!(name: "Updated Name")
|
||||
|
||||
assert_equal "Updated Name", school.reload.name
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user