From ef452dfea6655bafdc4c08c8e90af52a6986a72f Mon Sep 17 00:00:00 2001 From: zernonia Date: Mon, 18 Sep 2023 22:34:06 +0800 Subject: [PATCH] feat: complete utils test --- packages/cli/test/commands/init.test.ts | 131 +++++++++--------- .../{config-jsx => config-js}/components.json | 4 +- .../{config-jsx => config-js}/jsconfig.json | 0 .../{config-jsx => config-js}/package.json | 0 packages/cli/test/utils/get-config.test.ts | 68 ++++----- packages/cli/test/utils/registry.test.ts | 60 +++++--- 6 files changed, 145 insertions(+), 118 deletions(-) rename packages/cli/test/fixtures/{config-jsx => config-js}/components.json (90%) rename packages/cli/test/fixtures/{config-jsx => config-js}/jsconfig.json (100%) rename packages/cli/test/fixtures/{config-jsx => config-js}/package.json (100%) diff --git a/packages/cli/test/commands/init.test.ts b/packages/cli/test/commands/init.test.ts index 210a18ed..80f38927 100644 --- a/packages/cli/test/commands/init.test.ts +++ b/packages/cli/test/commands/init.test.ts @@ -85,75 +85,76 @@ test('init config-full', async () => { mockWriteFile.mockRestore() }) -// test('init config-partial', async () => { -// vi.spyOn(getPackageManger, 'getPackageManager').mockResolvedValue('npm') -// vi.spyOn(registry, 'getRegistryBaseColor').mockResolvedValue({ -// inlineColors: {}, -// cssVars: {}, -// inlineColorsTemplate: -// '@tailwind base;\n@tailwind components;\n@tailwind utilities;\n', -// cssVarsTemplate: -// '@tailwind base;\n@tailwind components;\n@tailwind utilities;\n', -// }) -// const mockMkdir = vi.spyOn(fs.promises, 'mkdir').mockResolvedValue(undefined) -// const mockWriteFile = vi.spyOn(fs.promises, 'writeFile').mockResolvedValue() +test('init config-partial', async () => { + vi.spyOn(getPackageManger, 'getPackageManager').mockResolvedValue('npm') + vi.spyOn(registry, 'getRegistryBaseColor').mockResolvedValue({ + inlineColors: {}, + cssVars: {}, + inlineColorsTemplate: + '@tailwind base;\n@tailwind components;\n@tailwind utilities;\n', + cssVarsTemplate: + '@tailwind base;\n@tailwind components;\n@tailwind utilities;\n', + }) + const mockMkdir = vi.spyOn(fs.promises, 'mkdir').mockResolvedValue(undefined) + const mockWriteFile = vi.spyOn(fs.promises, 'writeFile').mockResolvedValue() -// const targetDir = path.resolve(__dirname, '../fixtures/config-partial') -// const config = await getConfig(targetDir) + const targetDir = path.resolve(__dirname, '../fixtures/config-partial') + const config = await getConfig(targetDir) -// await runInit(targetDir, config!) + await runInit(targetDir, config!) -// expect(mockMkdir).toHaveBeenNthCalledWith( -// 1, -// expect.stringMatching(/src\/assets\/css$/), -// expect.anything(), -// ) -// expect(mockMkdir).toHaveBeenNthCalledWith( -// 2, -// expect.stringMatching(/lib$/), -// expect.anything(), -// ) -// expect(mockMkdir).toHaveBeenNthCalledWith( -// 3, -// expect.stringMatching(/components$/), -// expect.anything(), -// ) -// expect(mockWriteFile).toHaveBeenNthCalledWith( -// 1, -// expect.stringMatching(/tailwind.config.ts$/), -// expect.stringContaining('/** @type {import(\'tailwindcss\').Config} */'), -// 'utf8', -// ) -// expect(mockWriteFile).toHaveBeenNthCalledWith( -// 2, -// expect.stringMatching(/src\/assets\/css\/tailwind.css$/), -// expect.stringContaining('@tailwind base'), -// 'utf8', -// ) -// expect(mockWriteFile).toHaveBeenNthCalledWith( -// 3, -// expect.stringMatching(/utils.ts$/), -// expect.stringContaining('import { type ClassValue, clsx } from "clsx"'), -// 'utf8', -// ) -// expect(execa).toHaveBeenCalledWith( -// 'npm', -// [ -// 'install', -// 'tailwindcss-animate', -// 'class-variance-authority', -// 'clsx', -// 'tailwind-merge', -// 'lucide-react', -// ], -// { -// cwd: targetDir, -// }, -// ) + expect(mockMkdir).toHaveBeenNthCalledWith( + 1, + expect.stringMatching(/src\/assets\/css$/), + expect.anything(), + ) + expect(mockMkdir).toHaveBeenNthCalledWith( + 2, + expect.stringMatching(/lib$/), + expect.anything(), + ) + expect(mockMkdir).toHaveBeenNthCalledWith( + 3, + expect.stringMatching(/components$/), + expect.anything(), + ) + expect(mockWriteFile).toHaveBeenNthCalledWith( + 1, + expect.stringMatching(/tailwind.config.ts$/), + expect.stringContaining('/** @type {import(\'tailwindcss\').Config} */'), + 'utf8', + ) + expect(mockWriteFile).toHaveBeenNthCalledWith( + 2, + expect.stringMatching(/src\/assets\/css\/tailwind.css$/), + expect.stringContaining('@tailwind base'), + 'utf8', + ) + expect(mockWriteFile).toHaveBeenNthCalledWith( + 3, + expect.stringMatching(/utils.ts$/), + // eslint-disable-next-line @typescript-eslint/quotes + expect.stringContaining("import { type ClassValue, clsx } from 'clsx'"), + 'utf8', + ) + expect(execa).toHaveBeenCalledWith( + 'npm', + [ + 'install', + 'tailwindcss-animate', + 'class-variance-authority', + 'clsx', + 'tailwind-merge', + 'lucide-vue-next', + ], + { + cwd: targetDir, + }, + ) -// mockMkdir.mockRestore() -// mockWriteFile.mockRestore() -// }) + mockMkdir.mockRestore() + mockWriteFile.mockRestore() +}) afterEach(() => { vi.resetAllMocks() diff --git a/packages/cli/test/fixtures/config-jsx/components.json b/packages/cli/test/fixtures/config-js/components.json similarity index 90% rename from packages/cli/test/fixtures/config-jsx/components.json rename to packages/cli/test/fixtures/config-js/components.json index 92b1f5e0..102ff7a6 100644 --- a/packages/cli/test/fixtures/config-jsx/components.json +++ b/packages/cli/test/fixtures/config-js/components.json @@ -1,6 +1,5 @@ { "style": "default", - "tsx": false, "tailwind": { "config": "./tailwind.config.js", "css": "./src/assets/css/tailwind.css", @@ -10,5 +9,6 @@ "aliases": { "utils": "@/lib/utils", "components": "@/components" - } + }, + "typescript": false } diff --git a/packages/cli/test/fixtures/config-jsx/jsconfig.json b/packages/cli/test/fixtures/config-js/jsconfig.json similarity index 100% rename from packages/cli/test/fixtures/config-jsx/jsconfig.json rename to packages/cli/test/fixtures/config-js/jsconfig.json diff --git a/packages/cli/test/fixtures/config-jsx/package.json b/packages/cli/test/fixtures/config-js/package.json similarity index 100% rename from packages/cli/test/fixtures/config-jsx/package.json rename to packages/cli/test/fixtures/config-js/package.json diff --git a/packages/cli/test/utils/get-config.test.ts b/packages/cli/test/utils/get-config.test.ts index dc9e586f..f875f2b5 100644 --- a/packages/cli/test/utils/get-config.test.ts +++ b/packages/cli/test/utils/get-config.test.ts @@ -120,37 +120,39 @@ test('get config', async () => { typescript: true, }) - // expect( - // await getConfig(path.resolve(__dirname, '../fixtures/config-jsx')), - // ).toEqual({ - // style: 'default', - // tailwind: { - // config: './tailwind.config.js', - // css: './src/assets/css/tailwind.css', - // baseColor: 'neutral', - // cssVariables: false, - // }, - // aliases: { - // components: '@/components', - // utils: '@/lib/utils', - // }, - // resolvedPaths: { - // tailwindConfig: path.resolve( - // __dirname, - // '../fixtures/config-jsx', - // 'tailwind.config.js', - // ), - // tailwindCss: path.resolve( - // __dirname, - // '../fixtures/config-jsx', - // './src/assets/css/tailwind.css', - // ), - // components: path.resolve( - // __dirname, - // '../fixtures/config-jsx', - // './components', - // ), - // utils: path.resolve(__dirname, '../fixtures/config-jsx', './lib/utils'), - // }, - // }) + 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', + ), + utils: path.resolve(__dirname, '../fixtures/config-js', './lib/utils'), + }, + }) }) diff --git a/packages/cli/test/utils/registry.test.ts b/packages/cli/test/utils/registry.test.ts index a91b2307..608edef8 100644 --- a/packages/cli/test/utils/registry.test.ts +++ b/packages/cli/test/utils/registry.test.ts @@ -6,36 +6,60 @@ test('resolve tree', async () => { const index = [ { name: 'button', - dependencies: ['@radix-ui/react-slot'], + dependencies: ['radix-vue'], type: 'components:ui', - files: ['button.tsx'], + files: [ + 'button/Button.vue', + 'button/index.ts', + ], }, { name: 'dialog', - dependencies: ['@radix-ui/react-dialog'], + dependencies: ['radix-vue'], registryDependencies: ['button'], type: 'components:ui', - files: ['dialog.tsx'], + files: ['dialog/Dialog.vue', + 'dialog/DialogContent.vue', + 'dialog/DialogDescription.vue', + 'dialog/DialogFooter.vue', + 'dialog/DialogHeader.vue', + 'dialog/DialogTitle.vue', + 'dialog/DialogTrigger.vue', + 'dialog/index.ts', + ], }, { name: 'input', registryDependencies: ['button'], type: 'components:ui', - files: ['input.tsx'], + files: [ + 'input/Input.vue', + 'input/index.ts', + ], }, { name: 'alert-dialog', - dependencies: ['@radix-ui/react-alert-dialog'], + dependencies: ['radix-vue'], registryDependencies: ['button', 'dialog'], type: 'components:ui', - files: ['alert-dialog.tsx'], - }, - { - name: 'example-card', - type: 'components:component', - files: ['example-card.tsx'], - registryDependencies: ['button', 'dialog', 'input'], + files: ['alert-dialog/AlertDialog.vue', + 'alert-dialog/AlertDialogAction.vue', + 'alert-dialog/AlertDialogCancel.vue', + 'alert-dialog/AlertDialogContent.vue', + 'alert-dialog/AlertDialogDescription.vue', + 'alert-dialog/AlertDialogFooter.vue', + 'alert-dialog/AlertDialogHeader.vue', + 'alert-dialog/AlertDialogTitle.vue', + 'alert-dialog/AlertDialogTrigger.vue', + 'alert-dialog/index.ts', + ], }, + // { + // name: 'example-card', + // type: 'components:component', + // files: ['example-card.tsx'], + // registryDependencies: ['button', 'dialog', 'input'], + // }, ] expect( @@ -52,11 +76,11 @@ test('resolve tree', async () => { .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, ['example-card'])) + // .map(entry => entry.name) + // .sort(), + // ).toEqual(['button', 'dialog', 'example-card', 'input']) expect( (await resolveTree(index, ['foo'])).map(entry => entry.name).sort(),