From 95b089f1664dde3512bb5e53637c0855e93600b5 Mon Sep 17 00:00:00 2001 From: chouchouji <1305974212@qq.com> Date: Thu, 9 Jan 2025 22:04:44 +0800 Subject: [PATCH] test: add test cases --- src/index.ts | 16 +++++--- tests/index.spec.ts | 96 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 100 insertions(+), 12 deletions(-) diff --git a/src/index.ts b/src/index.ts index fbdb0af..33a59f5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -47,12 +47,16 @@ export function defineConfig(options: DefineConfigOptions = {}): Config { : undefined, plugins: [...builtinPlugins, ...normalizeToArray(plugins)], overrides: [ - { - files: '**/package.json', - options: { - packageSortOrder, - }, - }, + ...(sortPackageJson + ? [ + { + files: '**/package.json', + options: { + packageSortOrder, + }, + }, + ] + : []), ...normalizeToArray(overrides), ], ...rest, diff --git a/tests/index.spec.ts b/tests/index.spec.ts index 5faf2d1..493bfbd 100644 --- a/tests/index.spec.ts +++ b/tests/index.spec.ts @@ -8,7 +8,15 @@ describe('test config', () => { singleQuote: true, semi: false, importOrder: ['', '^vue$', '^react$', '', '^@/(.*)$', '^~/(.*)$', '^[.]'], - plugins: ['@ianvs/prettier-plugin-sort-imports', 'prettier-plugin-tailwindcss'], + plugins: ['@ianvs/prettier-plugin-sort-imports', 'prettier-plugin-tailwindcss', 'prettier-plugin-packagejson'], + overrides: [ + { + files: '**/package.json', + options: { + packageSortOrder: [], + }, + }, + ], }) }) @@ -18,29 +26,105 @@ describe('test config', () => { singleQuote: true, semi: false, importOrder: undefined, - plugins: ['prettier-plugin-tailwindcss'], + plugins: ['prettier-plugin-tailwindcss', 'prettier-plugin-packagejson'], + overrides: [ + { + files: '**/package.json', + options: { + packageSortOrder: [], + }, + }, + ], }) }) - it('sortImports is false', () => { + it('sortAtomicClass is false', () => { expect(defineConfig({ sortAtomicClass: false })).toStrictEqual({ printWidth: 120, singleQuote: true, semi: false, importOrder: ['', '^vue$', '^react$', '', '^@/(.*)$', '^~/(.*)$', '^[.]'], - plugins: ['@ianvs/prettier-plugin-sort-imports'], + plugins: ['@ianvs/prettier-plugin-sort-imports', 'prettier-plugin-packagejson'], + overrides: [ + { + files: '**/package.json', + options: { + packageSortOrder: [], + }, + }, + ], + }) + }) + + it('sortPackageJson is false', () => { + expect(defineConfig({ sortPackageJson: false })).toStrictEqual({ + printWidth: 120, + singleQuote: true, + semi: false, + importOrder: ['', '^vue$', '^react$', '', '^@/(.*)$', '^~/(.*)$', '^[.]'], + plugins: ['@ianvs/prettier-plugin-sort-imports', 'prettier-plugin-tailwindcss'], + overrides: [], + }) + }) + + it('custom packageSortOrder', () => { + expect(defineConfig({ packageSortOrder: ['name', 'version', 'description', 'scripts'] })).toStrictEqual({ + printWidth: 120, + singleQuote: true, + semi: false, + importOrder: ['', '^vue$', '^react$', '', '^@/(.*)$', '^~/(.*)$', '^[.]'], + plugins: ['@ianvs/prettier-plugin-sort-imports', 'prettier-plugin-tailwindcss', 'prettier-plugin-packagejson'], + overrides: [ + { + files: '**/package.json', + options: { + packageSortOrder: ['name', 'version', 'description', 'scripts'], + }, + }, + ], }) }) it('custom config', () => { expect( - defineConfig({ semi: true, plugins: ['prettier-plugin-test'], vueIndentScriptAndStyle: true }), + defineConfig({ + semi: true, + plugins: ['prettier-plugin-test'], + vueIndentScriptAndStyle: true, + overrides: [ + { + files: '*.md', + options: { + organizeImportsSkipDestructiveCodeActions: true, + }, + }, + ], + }), ).toStrictEqual({ printWidth: 120, singleQuote: true, semi: true, importOrder: ['', '^vue$', '^react$', '', '^@/(.*)$', '^~/(.*)$', '^[.]'], - plugins: ['@ianvs/prettier-plugin-sort-imports', 'prettier-plugin-tailwindcss', 'prettier-plugin-test'], + plugins: [ + '@ianvs/prettier-plugin-sort-imports', + 'prettier-plugin-tailwindcss', + 'prettier-plugin-packagejson', + 'prettier-plugin-test', + ], + overrides: [ + { + files: '**/package.json', + options: { + packageSortOrder: [], + }, + }, + { + files: '*.md', + options: { + organizeImportsSkipDestructiveCodeActions: true, + }, + }, + ], vueIndentScriptAndStyle: true, }) })