mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-06-22 20:25:44 +00:00
71 lines
1.7 KiB
TypeScript
71 lines
1.7 KiB
TypeScript
import { expect, test } from "vitest"
|
|
|
|
import { resolveTree } from "../../src/utils/registry"
|
|
|
|
test("resolve tree", async () => {
|
|
const index = [
|
|
{
|
|
name: "button",
|
|
dependencies: ["@radix-ui/react-slot"],
|
|
type: "components:ui",
|
|
files: ["button.tsx"],
|
|
},
|
|
{
|
|
name: "dialog",
|
|
dependencies: ["@radix-ui/react-dialog"],
|
|
registryDependencies: ["button"],
|
|
type: "components:ui",
|
|
files: ["dialog.tsx"],
|
|
},
|
|
{
|
|
name: "input",
|
|
registryDependencies: ["button"],
|
|
type: "components:ui",
|
|
files: ["input.tsx"],
|
|
},
|
|
{
|
|
name: "alert-dialog",
|
|
dependencies: ["@radix-ui/react-alert-dialog"],
|
|
registryDependencies: ["button", "dialog"],
|
|
type: "components:ui",
|
|
files: ["alert-dialog.tsx"],
|
|
},
|
|
{
|
|
name: "example-card",
|
|
type: "components:component",
|
|
files: ["example-card.tsx"],
|
|
registryDependencies: ["button", "dialog", "input"],
|
|
},
|
|
]
|
|
|
|
expect(
|
|
(await resolveTree(index, ["button"])).map((entry) => entry.name).sort()
|
|
).toEqual(["button"])
|
|
|
|
expect(
|
|
(await resolveTree(index, ["dialog"])).map((entry) => entry.name).sort()
|
|
).toEqual(["button", "dialog"])
|
|
|
|
expect(
|
|
(await resolveTree(index, ["alert-dialog", "dialog"]))
|
|
.map((entry) => entry.name)
|
|
.sort()
|
|
).toEqual(["alert-dialog", "button", "dialog"])
|
|
|
|
expect(
|
|
(await resolveTree(index, ["example-card"]))
|
|
.map((entry) => entry.name)
|
|
.sort()
|
|
).toEqual(["button", "dialog", "example-card", "input"])
|
|
|
|
expect(
|
|
(await resolveTree(index, ["foo"])).map((entry) => entry.name).sort()
|
|
).toEqual([])
|
|
|
|
expect(
|
|
(await resolveTree(index, ["button", "foo"]))
|
|
.map((entry) => entry.name)
|
|
.sort()
|
|
).toEqual(["button"])
|
|
})
|