repository = new InMemoryEstablishmentRepository(); $clock = new class implements Clock { public function now(): DateTimeImmutable { return new DateTimeImmutable('2026-02-16 10:00:00'); } }; $this->handler = new CreateEstablishmentHandler( $this->repository, $clock, ); } #[Test] public function createsEstablishmentAndReturnsResult(): void { $command = new CreateEstablishmentCommand( name: 'École Alpha', subdomain: 'ecole-alpha', adminEmail: 'admin@ecole-alpha.fr', superAdminId: self::SUPER_ADMIN_ID, ); $result = ($this->handler)($command); self::assertNotEmpty($result->establishmentId); self::assertNotEmpty($result->tenantId); self::assertSame('École Alpha', $result->name); self::assertSame('ecole-alpha', $result->subdomain); self::assertStringStartsWith('classeo_tenant_', $result->databaseName); } #[Test] public function savesEstablishmentToRepository(): void { $command = new CreateEstablishmentCommand( name: 'École Beta', subdomain: 'ecole-beta', adminEmail: 'admin@ecole-beta.fr', superAdminId: self::SUPER_ADMIN_ID, ); $result = ($this->handler)($command); $establishments = $this->repository->findAll(); self::assertCount(1, $establishments); self::assertSame($result->establishmentId, (string) $establishments[0]->id); } }