forked from baron/baron-sso
orgfront 버그 픽스
This commit is contained in:
46
orgfront/src/lib/tenantTree.test.ts
Normal file
46
orgfront/src/lib/tenantTree.test.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import type { TenantSummary } from "./adminApi";
|
||||
import { buildTenantFullTree } from "./tenantTree";
|
||||
|
||||
function tenant(
|
||||
id: string,
|
||||
slug: string,
|
||||
parentId?: string,
|
||||
type = "USER_GROUP",
|
||||
): TenantSummary {
|
||||
return {
|
||||
id,
|
||||
type,
|
||||
name: slug,
|
||||
slug,
|
||||
description: "",
|
||||
status: "active",
|
||||
parentId,
|
||||
memberCount: 0,
|
||||
totalMemberCount: 0,
|
||||
createdAt: "2026-06-10T00:00:00.000Z",
|
||||
updatedAt: "2026-06-10T00:00:00.000Z",
|
||||
};
|
||||
}
|
||||
|
||||
describe("buildTenantFullTree", () => {
|
||||
it("treats a self-parent hanmac-family tenant as a root", () => {
|
||||
const result = buildTenantFullTree([
|
||||
tenant(
|
||||
"hanmac-family-id",
|
||||
"hanmac-family",
|
||||
"hanmac-family-id",
|
||||
"COMPANY_GROUP",
|
||||
),
|
||||
tenant("saman-id", "saman", "hanmac-family-id", "COMPANY"),
|
||||
tenant("platform-id", "platform", "saman-id"),
|
||||
]);
|
||||
|
||||
expect(result.subTree).toHaveLength(1);
|
||||
expect(result.subTree[0]?.id).toBe("hanmac-family-id");
|
||||
expect(result.subTree[0]?.children[0]?.id).toBe("saman-id");
|
||||
expect(result.subTree[0]?.children[0]?.children[0]?.id).toBe(
|
||||
"platform-id",
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -60,9 +60,9 @@ export function buildTenantFullTree(
|
||||
return total;
|
||||
};
|
||||
|
||||
// Calculate for all top-level nodes (those without parent)
|
||||
// Calculate for all top-level nodes (those without parent or with self-parent)
|
||||
for (const node of tenantMap.values()) {
|
||||
if (!node.parentId) {
|
||||
if (!node.parentId || node.parentId === node.id) {
|
||||
visitedForCalc.clear();
|
||||
calculateRecursive(node);
|
||||
}
|
||||
@@ -81,6 +81,8 @@ export function buildTenantFullTree(
|
||||
}
|
||||
|
||||
// If no rootId, return all top-level roots as subTree
|
||||
const roots = Array.from(tenantMap.values()).filter((n) => !n.parentId);
|
||||
const roots = Array.from(tenantMap.values()).filter(
|
||||
(n) => !n.parentId || n.parentId === n.id,
|
||||
);
|
||||
return { currentBase: null, subTree: roots };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user