60 lines
1.8 KiB
Ruby
60 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "test_helper"
|
|
|
|
class TeacherClassroomTest < ActiveSupport::TestCase
|
|
test "valid teacher_classroom" do
|
|
teacher = create(:teacher)
|
|
classroom = create(:classroom)
|
|
teacher_classroom = TeacherClassroom.new(teacher: teacher, classroom: classroom)
|
|
|
|
assert teacher_classroom.valid?
|
|
end
|
|
|
|
test "requires teacher" do
|
|
classroom = create(:classroom)
|
|
teacher_classroom = TeacherClassroom.new(classroom: classroom)
|
|
|
|
assert_not teacher_classroom.valid?
|
|
assert_includes teacher_classroom.errors[:teacher], "must exist"
|
|
end
|
|
|
|
test "requires classroom" do
|
|
teacher = create(:teacher)
|
|
teacher_classroom = TeacherClassroom.new(teacher: teacher)
|
|
|
|
assert_not teacher_classroom.valid?
|
|
assert_includes teacher_classroom.errors[:classroom], "must exist"
|
|
end
|
|
|
|
test "validates uniqueness of teacher_id scoped to classroom_id" do
|
|
teacher = create(:teacher)
|
|
classroom = create(:classroom)
|
|
|
|
TeacherClassroom.create!(teacher: teacher, classroom: classroom)
|
|
|
|
duplicate = TeacherClassroom.new(teacher: teacher, classroom: classroom)
|
|
|
|
assert_not duplicate.valid?
|
|
assert_includes duplicate.errors[:teacher_id], "has already been taken"
|
|
end
|
|
|
|
test "allows same teacher in different classrooms" do
|
|
teacher = create(:teacher)
|
|
classroom1 = create(:classroom)
|
|
classroom2 = create(:classroom)
|
|
|
|
assert TeacherClassroom.create(teacher: teacher, classroom: classroom1)
|
|
assert TeacherClassroom.create(teacher: teacher, classroom: classroom2)
|
|
end
|
|
|
|
test "allows different teachers in same classroom" do
|
|
teacher1 = create(:teacher)
|
|
teacher2 = create(:teacher)
|
|
classroom = create(:classroom)
|
|
|
|
assert TeacherClassroom.create(teacher: teacher1, classroom: classroom)
|
|
assert TeacherClassroom.create(teacher: teacher2, classroom: classroom)
|
|
end
|
|
end
|