getId()); self::assertSame('PHP', $category->getName()); self::assertSame('php', $category->getSlug()); } public function testFromArrayHydratesCategory(): void { $category = Category::fromArray([ 'id' => '6', 'name' => 'Tests', 'slug' => 'tests', ]); self::assertSame(6, $category->getId()); self::assertSame('Tests', $category->getName()); self::assertSame('tests', $category->getSlug()); } public function testValidationRejectsEmptyName(): void { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('Le nom de la catégorie ne peut pas être vide'); new Category(1, '', 'slug'); } public function testValidationRejectsTooLongName(): void { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('Le nom de la catégorie ne peut pas dépasser 100 caractères'); new Category(1, str_repeat('a', 101), 'slug'); } }