id, $resource->id); self::assertSame(self::TEACHER_ID, $resource->teacherId); self::assertSame(self::CLASS_ID, $resource->classId); self::assertSame(self::SUBJECT_ID, $resource->subjectId); self::assertSame(self::ACADEMIC_YEAR_ID, $resource->academicYearId); self::assertSame('active', $resource->status); self::assertEquals($createdAt, $resource->startDate); self::assertNull($resource->endDate); self::assertEquals($createdAt, $resource->createdAt); } #[Test] public function fromDomainMapsRemovedAssignment(): void { $createdAt = new DateTimeImmutable('2026-02-10 10:00:00'); $removedAt = new DateTimeImmutable('2026-02-11 14:00:00'); $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: $createdAt, ); $assignment->retirer($removedAt); $resource = TeacherAssignmentResource::fromDomain($assignment); self::assertSame('removed', $resource->status); self::assertEquals($removedAt, $resource->endDate); } #[Test] public function fromDtoMapsCorrectly(): void { $createdAt = new DateTimeImmutable('2026-02-10 10:00:00'); $dto = new TeacherAssignmentDto( id: '550e8400-e29b-41d4-a716-446655440099', teacherId: self::TEACHER_ID, classId: self::CLASS_ID, subjectId: self::SUBJECT_ID, academicYearId: self::ACADEMIC_YEAR_ID, status: 'active', startDate: $createdAt, endDate: null, createdAt: $createdAt, ); $resource = TeacherAssignmentResource::fromDto($dto); self::assertSame('550e8400-e29b-41d4-a716-446655440099', $resource->id); self::assertSame(self::TEACHER_ID, $resource->teacherId); self::assertSame(self::CLASS_ID, $resource->classId); self::assertSame(self::SUBJECT_ID, $resource->subjectId); self::assertSame(self::ACADEMIC_YEAR_ID, $resource->academicYearId); self::assertSame('active', $resource->status); self::assertEquals($createdAt, $resource->startDate); self::assertNull($resource->endDate); self::assertEquals($createdAt, $resource->createdAt); } }