import { describe, expect, test } from "vitest"; import type { GroupPermissionKey } from "../permissions"; import { getPermissionsWithChildren, getPermissionsWithParents } from "../permissions"; describe("getPermissionsWithParents should return the correct permissions", () => { test.each([ [["board-view-all"], ["board-view-all", "board-modify-all", "board-full-all", "admin"]], [["board-modify-all"], ["board-modify-all", "board-full-all", "admin"]], [["board-create"], ["board-create", "board-full-all", "admin"]], [["board-full-all"], ["board-full-all", "admin"]], [["integration-use-all"], ["integration-use-all", "integration-interact-all", "integration-full-all", "admin"]], [["integration-create"], ["integration-create", "integration-full-all", "admin"]], [["integration-interact-all"], ["integration-interact-all", "integration-full-all", "admin"]], [["integration-full-all"], ["integration-full-all", "admin"]], [["admin"], ["admin"]], ] satisfies [GroupPermissionKey[], GroupPermissionKey[]][])("expect %s to return %s", (input, expectedOutput) => { expect(getPermissionsWithParents(input)).toEqual(expect.arrayContaining(expectedOutput)); }); }); describe("getPermissionsWithChildren should return the correct permissions", () => { test.each([ [["board-view-all"], ["board-view-all"]], [["board-modify-all"], ["board-view-all", "board-modify-all"]], [["board-create"], ["board-create"]], [["board-full-all"], ["board-full-all", "board-modify-all", "board-view-all"]], [["integration-use-all"], ["integration-use-all"]], [["integration-create"], ["integration-create"]], [["integration-interact-all"], ["integration-interact-all", "integration-use-all"]], [["integration-full-all"], ["integration-full-all", "integration-interact-all", "integration-use-all"]], [ ["admin"], [ "admin", "board-full-all", "board-modify-all", "board-view-all", "integration-full-all", "integration-interact-all", "integration-use-all", ], ], ] satisfies [GroupPermissionKey[], GroupPermissionKey[]][])("expect %s to return %s", (input, expectedOutput) => { expect(getPermissionsWithChildren(input)).toEqual(expect.arrayContaining(expectedOutput)); }); });