shadcn-vue/packages/cli/test/utils/registry.test.ts
2023-09-06 10:59:42 +08:00

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'])
})