forked from baron/baron-sso
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
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",
|
|
);
|
|
});
|
|
});
|