refactor(core) : RBAC Task 1 - polish apres revue qualite
- Permission : guards constructeur (code/label/module non vides, code avec point) - Permission::revive() reutilise updateMetadata() pour eviter la duplication - Suppression de SystemRolesTest (tautologique, ne capture aucun comportement) - Role::permissions : commentaire explicite sur la raison du fetch EAGER - Alignement des types de retour sur static (style User.php) - Nouveau test Role::addPermission avec permissions distinctes Ticket #343 - Task 1 polish (revue qualite). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ declare(strict_types=1);
|
||||
namespace App\Tests\Module\Core\Domain\Entity;
|
||||
|
||||
use App\Module\Core\Domain\Entity\Permission;
|
||||
use InvalidArgumentException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
@@ -54,4 +55,33 @@ final class PermissionTest extends TestCase
|
||||
self::assertTrue($permission->isOrphan());
|
||||
self::assertSame('Lbl', $permission->getLabel());
|
||||
}
|
||||
|
||||
public function testConstructorRejectsEmptyCode(): void
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
new Permission('', 'Libelle', 'core');
|
||||
}
|
||||
|
||||
public function testConstructorRejectsCodeWithoutDot(): void
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('invalid_format');
|
||||
|
||||
new Permission('invalid_format', 'Libelle', 'core');
|
||||
}
|
||||
|
||||
public function testConstructorRejectsEmptyLabel(): void
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
new Permission('core.users.view', '', 'core');
|
||||
}
|
||||
|
||||
public function testConstructorRejectsEmptyModule(): void
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
new Permission('core.users.view', 'Libelle', '');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,6 +37,18 @@ final class RoleTest extends TestCase
|
||||
self::assertSame(1, $role->getPermissions()->count());
|
||||
}
|
||||
|
||||
public function testAddPermissionAddsMultipleDistinct(): void
|
||||
{
|
||||
$role = new Role('custom', 'Custom');
|
||||
$permissionView = new Permission('core.users.view', 'Voir', 'core');
|
||||
$permissionEdit = new Permission('core.users.edit', 'Editer', 'core');
|
||||
|
||||
$role->addPermission($permissionView);
|
||||
$role->addPermission($permissionEdit);
|
||||
|
||||
self::assertSame(2, $role->getPermissions()->count());
|
||||
}
|
||||
|
||||
public function testRemovePermissionRemovesWhenPresent(): void
|
||||
{
|
||||
$role = new Role('custom', 'Custom');
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Tests\Module\Core\Domain\Security;
|
||||
|
||||
use App\Module\Core\Domain\Security\SystemRoles;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class SystemRolesTest extends TestCase
|
||||
{
|
||||
public function testAdminCodeConstant(): void
|
||||
{
|
||||
self::assertSame('admin', SystemRoles::ADMIN_CODE);
|
||||
}
|
||||
|
||||
public function testUserCodeConstant(): void
|
||||
{
|
||||
self::assertSame('user', SystemRoles::USER_CODE);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user