[]]; } }; $request = Request::create('/test'); $this->assertEmpty($collection->resolveCollectionAbilities($request)); } /** * abilityMap 정의 시 권한에 따라 boolean 반환 */ public function test_ability_map_resolves_permissions(): void { $user = User::factory()->create(); $role = Role::create([ 'name' => ['ko' => '테스트'], 'identifier' => 'test_role', 'is_admin' => true, ]); $perm = Permission::firstOrCreate( ['identifier' => 'core.test.delete'], ['name' => ['ko' => '삭제'], 'type' => 'admin', 'order' => 1] ); $role->permissions()->attach($perm->id); $user->roles()->attach($role->id); $collection = new class(collect([])) extends BaseApiCollection { protected function abilityMap(): array { return [ 'can_delete' => 'core.test.delete', 'can_create' => 'core.test.create', ]; } public function toArray(Request $request): array { return ['data' => []]; } }; $request = Request::create('/test'); $request->setUserResolver(fn () => $user->fresh()); $abilities = $collection->resolveCollectionAbilities($request); $this->assertTrue($abilities['can_delete']); $this->assertFalse($abilities['can_create']); } /** * resolveCollectionAbilities는 public 접근 가능 */ public function test_resolve_collection_abilities_is_public(): void { $collection = new class(collect([])) extends BaseApiCollection { public function toArray(Request $request): array { return ['data' => []]; } }; $ref = new \ReflectionMethod($collection, 'resolveCollectionAbilities'); $this->assertTrue($ref->isPublic()); } }