82 lines
2.4 KiB
TypeScript
82 lines
2.4 KiB
TypeScript
import path from 'node:path'
|
|
import { type ConfigLoaderSuccessResult, loadConfig } from 'tsconfig-paths'
|
|
import { expect, test } from 'vitest'
|
|
|
|
import { resolveImport } from '../../src/utils/resolve-import'
|
|
|
|
test('resolve import', async () => {
|
|
expect(
|
|
resolveImport('@/foo/bar', {
|
|
absoluteBaseUrl: '/Users/shadcn/Projects/foobar',
|
|
paths: {
|
|
'@/*': ['./src/*'],
|
|
'~/components/*': ['./src/components/*'],
|
|
'~/lib': ['./src/lib'],
|
|
},
|
|
}),
|
|
).toEqual('/Users/shadcn/Projects/foobar/src/foo/bar')
|
|
|
|
expect(
|
|
resolveImport('~/components/foo/bar/baz', {
|
|
absoluteBaseUrl: '/Users/shadcn/Projects/foobar',
|
|
paths: {
|
|
'@/*': ['./src/*'],
|
|
'~/components/*': ['./src/components/*'],
|
|
'~/lib': ['./src/lib'],
|
|
},
|
|
}),
|
|
).toEqual('/Users/shadcn/Projects/foobar/src/components/foo/bar/baz')
|
|
|
|
expect(
|
|
resolveImport('components/foo/bar', {
|
|
absoluteBaseUrl: '/Users/shadcn/Projects/foobar',
|
|
paths: {
|
|
'components/*': ['./src/app/components/*'],
|
|
'ui/*': ['./src/ui/primities/*'],
|
|
'lib': ['./lib'],
|
|
},
|
|
}),
|
|
).toEqual('/Users/shadcn/Projects/foobar/src/app/components/foo/bar')
|
|
|
|
expect(
|
|
resolveImport('lib/utils', {
|
|
absoluteBaseUrl: '/Users/shadcn/Projects/foobar',
|
|
paths: {
|
|
'components/*': ['./src/app/components/*'],
|
|
'ui/*': ['./src/ui/primities/*'],
|
|
'lib': ['./lib'],
|
|
},
|
|
}),
|
|
).toEqual('/Users/shadcn/Projects/foobar/lib/utils')
|
|
})
|
|
|
|
test('resolve import with base url', async () => {
|
|
const cwd = path.resolve(__dirname, '../fixtures/with-base-url')
|
|
const config = (loadConfig(cwd)) as ConfigLoaderSuccessResult
|
|
|
|
expect(resolveImport('@/components/ui', config)).toEqual(
|
|
path.resolve(cwd, 'components/ui'),
|
|
)
|
|
expect(resolveImport('@/lib/utils', config)).toEqual(
|
|
path.resolve(cwd, 'lib/utils'),
|
|
)
|
|
expect(resolveImport('foo/bar', config)).toEqual(
|
|
path.resolve(cwd, 'foo/bar'),
|
|
)
|
|
})
|
|
|
|
test('resolve import without base url', async () => {
|
|
const cwd = path.resolve(__dirname, '../fixtures/without-base-url')
|
|
const config = (loadConfig(cwd)) as ConfigLoaderSuccessResult
|
|
|
|
expect(resolveImport('~/components/ui', config)).toEqual(
|
|
path.resolve(cwd, 'components/ui'),
|
|
)
|
|
expect(resolveImport('~/lib/utils', config)).toEqual(
|
|
path.resolve(cwd, 'lib/utils'),
|
|
)
|
|
expect(resolveImport('foo/bar', config)).toEqual(
|
|
path.resolve(cwd, 'foo/bar'),
|
|
)
|
|
})
|