v7.0.0-beta.2 release

This commit is contained in:
HeuJung
2026-04-20 20:37:49 +09:00
parent 6595fd0eb5
commit fa8eba7a0d
1165 changed files with 107118 additions and 762127 deletions
@@ -95,29 +95,33 @@ class ModuleRolePermissionTest extends TestCase
*
* 계층형 구조로 권한이 생성됨:
* - 1레벨: 모듈 노드 (sirsoft-board)
* - 2레벨: 카테고리 노드 (sirsoft-board.boards, sirsoft-board.reports)
* - 3레벨: 개별 권한 (sirsoft-board.boards.read, create, update, delete, sirsoft-board.reports.view, manage)
* - 2레벨: 카테고리 노드 (sirsoft-board.boards, sirsoft-board.settings, sirsoft-board.reports)
* - 3레벨: 개별 권한 (boards: read/create/update/delete, settings: read/update, reports: view/manage)
*/
public function test_module_installation_creates_permissions(): void
{
$this->moduleManager->installModule('sirsoft-board');
// 권한이 생성되었는지 확인 (계층형 구조: 모듈 1 + 카테고리 2 + 개별 권한 6 = 9개)
// 권한이 생성되었는지 확인 (계층형 구조: 모듈 1 + 카테고리 3 + 개별 권한 8 = 12개)
$permissions = Permission::where('extension_type', ExtensionOwnerType::Module)
->where('extension_identifier', 'sirsoft-board')->get();
$this->assertCount(9, $permissions);
$this->assertCount(12, $permissions);
$identifiers = $permissions->pluck('identifier')->toArray();
// 1레벨: 모듈 노드
$this->assertContains('sirsoft-board', $identifiers);
// 2레벨: 카테고리 노드
$this->assertContains('sirsoft-board.boards', $identifiers);
$this->assertContains('sirsoft-board.settings', $identifiers);
$this->assertContains('sirsoft-board.reports', $identifiers);
// 3레벨: 개별 권한 - boards
$this->assertContains('sirsoft-board.boards.read', $identifiers);
$this->assertContains('sirsoft-board.boards.create', $identifiers);
$this->assertContains('sirsoft-board.boards.update', $identifiers);
$this->assertContains('sirsoft-board.boards.delete', $identifiers);
// 3레벨: 개별 권한 - settings
$this->assertContains('sirsoft-board.settings.read', $identifiers);
$this->assertContains('sirsoft-board.settings.update', $identifiers);
// 3레벨: 개별 권한 - reports
$this->assertContains('sirsoft-board.reports.view', $identifiers);
$this->assertContains('sirsoft-board.reports.manage', $identifiers);
@@ -130,10 +134,10 @@ class ModuleRolePermissionTest extends TestCase
{
$this->moduleManager->installModule('sirsoft-board');
// admin role에 모든 개별 권한(6개)이 할당되었는지 확인
// admin role에 모든 개별 권한(8개)이 할당되었는지 확인 (boards 4 + settings 2 + reports 2)
$adminRole = Role::where('identifier', 'admin')->first();
$adminPermissions = $adminRole->permissions()->where('extension_identifier', 'sirsoft-board')->get();
$this->assertCount(6, $adminPermissions);
$this->assertCount(8, $adminPermissions);
// manager role에 할당된 권한 확인 (boards: read, create, update + reports: view = 4개)
$managerRole = Role::where('identifier', 'manager')->first();
@@ -280,16 +284,16 @@ class ModuleRolePermissionTest extends TestCase
$this->moduleManager->installModule('sirsoft-board');
// 계층형 구조에서 개별 권한(3레벨)만 role에 할당됨
// 모듈의 getPermissions()에서 정의된 개별 권한 6개만 할당되어야 함
// 모듈의 getPermissions()에서 정의된 개별 권한 8개만 할당되어야 함
$adminRole = Role::where('identifier', 'admin')->first();
// admin role에 할당된 모듈 권한 개수 확인 (개별 권한 6개)
// admin role에 할당된 모듈 권한 개수 확인 (개별 권한 8개)
$assignedPermissions = $adminRole->permissions()->where('extension_identifier', 'sirsoft-board')->count();
$this->assertEquals(6, $assignedPermissions);
$this->assertEquals(8, $assignedPermissions);
// 전체 모듈 권한 개수 확인 (모듈 1 + 카테고리 2 + 개별 6 = 9개)
// 전체 모듈 권한 개수 확인 (모듈 1 + 카테고리 3 + 개별 8 = 12개)
$totalModulePermissions = Permission::where('extension_identifier', 'sirsoft-board')->count();
$this->assertEquals(9, $totalModulePermissions);
$this->assertEquals(12, $totalModulePermissions);
// 개별 권한만 role에 할당되었는지 확인
$assignedIdentifiers = $adminRole->permissions()
@@ -301,12 +305,15 @@ class ModuleRolePermissionTest extends TestCase
$this->assertContains('sirsoft-board.boards.create', $assignedIdentifiers);
$this->assertContains('sirsoft-board.boards.update', $assignedIdentifiers);
$this->assertContains('sirsoft-board.boards.delete', $assignedIdentifiers);
$this->assertContains('sirsoft-board.settings.read', $assignedIdentifiers);
$this->assertContains('sirsoft-board.settings.update', $assignedIdentifiers);
$this->assertContains('sirsoft-board.reports.view', $assignedIdentifiers);
$this->assertContains('sirsoft-board.reports.manage', $assignedIdentifiers);
// 모듈 노드와 카테고리 노드는 할당되지 않음
$this->assertNotContains('sirsoft-board', $assignedIdentifiers);
$this->assertNotContains('sirsoft-board.boards', $assignedIdentifiers);
$this->assertNotContains('sirsoft-board.settings', $assignedIdentifiers);
$this->assertNotContains('sirsoft-board.reports', $assignedIdentifiers);
}
}