shadcn-vue/packages/cli/test/utils/get-config.test.ts
Sadegh Barati 0e84af73de
feat: use unjs modules and improve cli from main shadcn-ui source, custom ui dir (#324)
* feat: add devDeps, add nypm for installing deps

* feat: custom ui dir

* refactor: use consola instead of chalk

* test: ui alias

* refactor: import { z } from 'zod' instead of *, replace node:path with pathe

* chore: add components name to `configFile` option

* chore: update `c12` which fix json5 parse issue

and it also supports .config directory

* chore: update `https-proxy-agent`

* fix: await until dependencies are installed then run detypes process

* feat: add tailwind prefix

* test: tw-prefix snapshot

* chore: add prefix option to init

* test: apply prefix

* fix: tw-prefix parse wrongly

* chore: hide prefix temporarily

---------

Co-authored-by: zernonia <zernonia@gmail.com>
2024-03-06 05:38:19 +03:30

176 lines
4.1 KiB
TypeScript

import path from 'pathe'
import { expect, it } from 'vitest'
import { getConfig, getRawConfig } from '../../src/utils/get-config'
it('get raw config', async () => {
expect(
await getRawConfig(path.resolve(__dirname, '../fixtures/config-none')),
).toEqual(null)
expect(
await getRawConfig(path.resolve(__dirname, '../fixtures/config-partial')),
).toEqual({
style: 'default',
framework: 'Vite',
tailwind: {
config: './tailwind.config.ts',
css: './src/assets/css/tailwind.css',
baseColor: 'neutral',
cssVariables: false,
},
aliases: {
components: '@/components',
utils: '@/lib/utils',
},
typescript: true,
})
expect(
getRawConfig(path.resolve(__dirname, '../fixtures/config-invalid')),
).rejects.toThrowError()
})
it('get config', async () => {
expect(
await getConfig(path.resolve(__dirname, '../fixtures/config-none')),
).toEqual(null)
expect(
getConfig(path.resolve(__dirname, '../fixtures/config-invalid')),
).rejects.toThrowError()
expect(
await getConfig(path.resolve(__dirname, '../fixtures/config-partial')),
).toEqual({
style: 'default',
tailwind: {
config: './tailwind.config.ts',
css: './src/assets/css/tailwind.css',
baseColor: 'neutral',
cssVariables: false,
},
aliases: {
components: '@/components',
utils: '@/lib/utils',
},
framework: 'Vite',
resolvedPaths: {
tailwindConfig: path.resolve(
__dirname,
'../fixtures/config-partial',
'tailwind.config.ts',
),
tailwindCss: path.resolve(
__dirname,
'../fixtures/config-partial',
'./src/assets/css/tailwind.css',
),
components: path.resolve(
__dirname,
'../fixtures/config-partial',
'./components',
),
ui: path.resolve(
__dirname,
'../fixtures/config-partial',
'./components',
),
utils: path.resolve(
__dirname,
'../fixtures/config-partial',
'./lib/utils',
),
},
typescript: true,
})
expect(
await getConfig(path.resolve(__dirname, '../fixtures/config-full')),
).toEqual({
style: 'new-york',
tailwind: {
config: 'tailwind.config.ts',
baseColor: 'zinc',
css: 'src/app/globals.css',
cssVariables: true,
prefix: 'tw-',
},
aliases: {
components: '~/components',
ui: '~/ui',
utils: '~/lib/utils',
},
framework: 'Vite',
resolvedPaths: {
tailwindConfig: path.resolve(
__dirname,
'../fixtures/config-full',
'tailwind.config.ts',
),
tailwindCss: path.resolve(
__dirname,
'../fixtures/config-full',
'./src/app/globals.css',
),
components: path.resolve(
__dirname,
'../fixtures/config-full',
'./src/components',
),
ui: path.resolve(
__dirname,
'../fixtures/config-full',
'./src/ui',
),
utils: path.resolve(
__dirname,
'../fixtures/config-full',
'./src/lib/utils',
),
},
typescript: true,
})
expect(
await getConfig(path.resolve(__dirname, '../fixtures/config-js')),
).toEqual({
style: 'default',
tailwind: {
config: './tailwind.config.js',
css: './src/assets/css/tailwind.css',
baseColor: 'neutral',
cssVariables: false,
},
typescript: false,
aliases: {
components: '@/components',
utils: '@/lib/utils',
},
framework: 'Vite',
resolvedPaths: {
tailwindConfig: path.resolve(
__dirname,
'../fixtures/config-js',
'tailwind.config.js',
),
tailwindCss: path.resolve(
__dirname,
'../fixtures/config-js',
'./src/assets/css/tailwind.css',
),
components: path.resolve(
__dirname,
'../fixtures/config-js',
'./components',
),
ui: path.resolve(
__dirname,
'../fixtures/config-js',
'./components',
),
utils: path.resolve(__dirname, '../fixtures/config-js', './lib/utils'),
},
})
})