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