New_Micro_Learning/backend/tests/Unit/Identity/RolePermissionsTest.php

37 خطوط
1.9 KiB
PHP

<?php
namespace Tests\Unit\Identity;
use App\Modules\Identity\Application\RolePermissions;
use App\Modules\Identity\Domain\Enums\Permission;
use App\Modules\Identity\Domain\Enums\UserRole;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
class RolePermissionsTest extends TestCase
{
#[DataProvider('permissionCases')]
public function test_core_permission_matrix(UserRole $role, Permission $permission, bool $expected): void
{
$this->assertSame($expected, (new RolePermissions)->allows($role, $permission));
}
public static function permissionCases(): array
{
return [
'designer authors' => [UserRole::CourseDesigner, Permission::CoursesAuthor, true],
'designer assigns' => [UserRole::CourseDesigner, Permission::AssignmentsManage, true],
'designer manages users' => [UserRole::CourseDesigner, Permission::UsersManage, true],
'manager cannot author' => [UserRole::Manager, Permission::CoursesAuthor, false],
'manager cannot assign' => [UserRole::Manager, Permission::AssignmentsManage, false],
'manager cannot manage users' => [UserRole::Manager, Permission::UsersManage, false],
'manager views team analytics' => [UserRole::Manager, Permission::TeamAnalyticsView, true],
'manager views personal assigned learning' => [UserRole::Manager, Permission::PersonalLearningView, true],
'learner personal learning only' => [UserRole::Learner, Permission::PersonalLearningView, true],
'learner cannot view users' => [UserRole::Learner, Permission::UsersView, false],
'super admin sees operations' => [UserRole::SuperAdmin, Permission::PlatformViewOperations, true],
'super admin lacks organization analytics' => [UserRole::SuperAdmin, Permission::OrganizationAnalyticsView, false],
];
}
}