Files
Coltura/tests/Module/Core/Domain/Entity/PermissionTest.php
Matthieu f0ea9201f5 feat(core) : RBAC Task 1 - entites Permission et Role + domaine securite
- Entite Permission avec methodes markOrphan/revive/updateMetadata
- Entite Role avec addPermission/removePermission/ensureDeletable
- Constantes SystemRoles (codes admin/user partages)
- Exception SystemRoleDeletionException pour la garde de suppression
- Tests unitaires couvrant le comportement domaine (pas de BDD)

Ticket #343 - 1/7 : fondations RBAC (domaine pur, sans persistence).
Les entites ne portent pas encore repositoryClass (ajoute en Task 2).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 16:30:15 +02:00

58 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Tests\Module\Core\Domain\Entity;
use App\Module\Core\Domain\Entity\Permission;
use PHPUnit\Framework\TestCase;
/**
* @internal
*/
final class PermissionTest extends TestCase
{
public function testConstructorInitialState(): void
{
$permission = new Permission('core.users.view', 'Voir les utilisateurs', 'core');
self::assertNull($permission->getId());
self::assertSame('core.users.view', $permission->getCode());
self::assertSame('Voir les utilisateurs', $permission->getLabel());
self::assertSame('core', $permission->getModule());
self::assertFalse($permission->isOrphan());
}
public function testMarkOrphanSetsFlag(): void
{
$permission = new Permission('core.users.view', 'Voir les utilisateurs', 'core');
$permission->markOrphan();
self::assertTrue($permission->isOrphan());
}
public function testReviveResetsOrphanAndUpdatesMetadata(): void
{
$permission = new Permission('core.users.view', 'Old label', 'core');
$permission->markOrphan();
$permission->revive('New label', 'commercial');
self::assertFalse($permission->isOrphan());
self::assertSame('New label', $permission->getLabel());
self::assertSame('commercial', $permission->getModule());
}
public function testUpdateMetadataDoesNotTouchOrphan(): void
{
$permission = new Permission('core.users.view', 'Old', 'core');
$permission->markOrphan();
$permission->updateMetadata('Lbl', 'core');
self::assertTrue($permission->isOrphan());
self::assertSame('Lbl', $permission->getLabel());
}
}