repository = new InMemoryTeacherAssignmentRepository(); $this->checker = new RepositoryTeacherAssignmentChecker($this->repository); } #[Test] public function estAffecteReturnsTrueWhenActiveAssignmentExists(): void { $this->createAndSaveAssignment(); self::assertTrue($this->checker->estAffecte( UserId::fromString(self::TEACHER_ID), ClassId::fromString(self::CLASS_ID), SubjectId::fromString(self::SUBJECT_ID), AcademicYearId::fromString(self::ACADEMIC_YEAR_ID), TenantId::fromString(self::TENANT_ID), )); } #[Test] public function estAffecteReturnsFalseWhenNoAssignment(): void { self::assertFalse($this->checker->estAffecte( UserId::fromString(self::TEACHER_ID), ClassId::fromString(self::CLASS_ID), SubjectId::fromString(self::SUBJECT_ID), AcademicYearId::fromString(self::ACADEMIC_YEAR_ID), TenantId::fromString(self::TENANT_ID), )); } #[Test] public function estAffecteReturnsFalseWhenAssignmentRemoved(): void { $assignment = $this->createAndSaveAssignment(); $assignment->retirer(new DateTimeImmutable('2026-03-01 10:00:00')); $this->repository->save($assignment); self::assertFalse($this->checker->estAffecte( UserId::fromString(self::TEACHER_ID), ClassId::fromString(self::CLASS_ID), SubjectId::fromString(self::SUBJECT_ID), AcademicYearId::fromString(self::ACADEMIC_YEAR_ID), TenantId::fromString(self::TENANT_ID), )); } #[Test] public function estAffecteReturnsFalseForDifferentSubject(): void { $this->createAndSaveAssignment(); self::assertFalse($this->checker->estAffecte( UserId::fromString(self::TEACHER_ID), ClassId::fromString(self::CLASS_ID), SubjectId::fromString('550e8400-e29b-41d4-a716-446655440099'), AcademicYearId::fromString(self::ACADEMIC_YEAR_ID), TenantId::fromString(self::TENANT_ID), )); } private function createAndSaveAssignment(): TeacherAssignment { $assignment = TeacherAssignment::creer( tenantId: TenantId::fromString(self::TENANT_ID), teacherId: UserId::fromString(self::TEACHER_ID), classId: ClassId::fromString(self::CLASS_ID), subjectId: SubjectId::fromString(self::SUBJECT_ID), academicYearId: AcademicYearId::fromString(self::ACADEMIC_YEAR_ID), createdAt: new DateTimeImmutable('2026-02-12 10:00:00'), ); $this->repository->save($assignment); return $assignment; } }