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], ]; } }