]> git.ipfire.org Git - thirdparty/vuejs/create-vue.git/commitdiff
test: re-add eslint unit tests (#575)
authorCédric Exbrayat <cexbrayat@users.noreply.github.com>
Thu, 10 Oct 2024 07:59:39 +0000 (09:59 +0200)
committerGitHub <noreply@github.com>
Thu, 10 Oct 2024 07:59:39 +0000 (15:59 +0800)
__test__/renderEslint.spec.ts [new file with mode: 0644]
utils/renderEslint.ts

diff --git a/__test__/renderEslint.spec.ts b/__test__/renderEslint.spec.ts
new file mode 100644 (file)
index 0000000..a36fafd
--- /dev/null
@@ -0,0 +1,101 @@
+import { it, describe, expect } from 'vitest'
+import { getAdditionalConfigs } from '../utils/renderEslint'
+
+describe('renderEslint', () => {
+  it('should get additional dependencies and config with no test flags', () => {
+    const additionalConfigs = getAdditionalConfigs({
+      needsVitest: false,
+      needsCypress: false,
+      needsCypressCT: false,
+      needsPlaywright: false
+    })
+    expect(additionalConfigs).toStrictEqual([])
+  })
+
+  it('should get additional dependencies and config with for vitest', () => {
+    const additionalConfigs = getAdditionalConfigs({
+      needsVitest: true,
+      needsCypress: false,
+      needsCypressCT: false,
+      needsPlaywright: false
+    })
+    expect(additionalConfigs).toHaveLength(1)
+    const [additionalVitestConfig] = additionalConfigs
+    expect(additionalVitestConfig.devDependencies['@vitest/eslint-plugin']).not.toBeUndefined()
+    expect(additionalVitestConfig.afterVuePlugin).toHaveLength(1)
+    const [additionalVitestPlugin] = additionalVitestConfig.afterVuePlugin!
+    expect(additionalVitestPlugin.importer).toBe(`import pluginVitest from '@vitest/eslint-plugin'`)
+    expect(additionalVitestPlugin.content).toContain('...pluginVitest.configs.recommended')
+    expect(additionalVitestPlugin.content).toContain("files: ['src/**/__tests__/*']")
+  })
+
+  it('should get additional dependencies and config with for cypress', () => {
+    const additionalConfigs = getAdditionalConfigs({
+      needsVitest: false,
+      needsCypress: true,
+      needsCypressCT: false,
+      needsPlaywright: false
+    })
+    expect(additionalConfigs).toHaveLength(1)
+    const [additionalCypressConfig] = additionalConfigs
+    expect(additionalCypressConfig.devDependencies['eslint-plugin-cypress']).not.toBeUndefined()
+    expect(additionalCypressConfig.afterVuePlugin).toHaveLength(1)
+    const [additionalCypressPlugin] = additionalCypressConfig.afterVuePlugin!
+    expect(additionalCypressPlugin.importer).toBe(
+      "import pluginCypress from 'eslint-plugin-cypress/flat'"
+    )
+    expect(additionalCypressPlugin.content).toContain('...pluginCypress.configs.recommended')
+    expect(additionalCypressPlugin.content).toContain(
+      "'cypress/e2e/**/*.{cy,spec}.{js,ts,jsx,tsx}'"
+    )
+    expect(additionalCypressPlugin.content).toContain("'cypress/support/**/*.{js,ts,jsx,tsx}'")
+  })
+
+  it('should get additional dependencies and config with for cypress with component testing', () => {
+    const additionalConfigs = getAdditionalConfigs({
+      needsVitest: false,
+      needsCypress: true,
+      needsCypressCT: true,
+      needsPlaywright: false
+    })
+    expect(additionalConfigs).toHaveLength(1)
+    const [additionalCypressConfig] = additionalConfigs
+    expect(additionalCypressConfig.devDependencies['eslint-plugin-cypress']).not.toBeUndefined()
+    expect(additionalCypressConfig.afterVuePlugin).toHaveLength(1)
+    const [additionalCypressPlugin] = additionalCypressConfig.afterVuePlugin!
+    expect(additionalCypressPlugin.importer).toBe(
+      "import pluginCypress from 'eslint-plugin-cypress/flat'"
+    )
+    expect(additionalCypressPlugin.content).toContain('...pluginCypress.configs.recommended')
+    expect(additionalCypressPlugin.content).toContain("'**/__tests__/*.{cy,spec}.{js,ts,jsx,tsx}'")
+    expect(additionalCypressPlugin.content).toContain(
+      "'cypress/e2e/**/*.{cy,spec}.{js,ts,jsx,tsx}'"
+    )
+    expect(additionalCypressPlugin.content).toContain("'cypress/support/**/*.{js,ts,jsx,tsx}'")
+  })
+
+  it('should get additional dependencies and config with for playwright', () => {
+    const additionalConfigs = getAdditionalConfigs({
+      needsVitest: false,
+      needsCypress: false,
+      needsCypressCT: false,
+      needsPlaywright: true
+    })
+    expect(additionalConfigs).toHaveLength(1)
+    const [additionalPlaywrightConfig] = additionalConfigs
+    expect(
+      additionalPlaywrightConfig.devDependencies['eslint-plugin-playwright']
+    ).not.toBeUndefined()
+    expect(additionalPlaywrightConfig.afterVuePlugin).toHaveLength(1)
+    const [additionalPlaywrightPlugin] = additionalPlaywrightConfig.afterVuePlugin!
+    expect(additionalPlaywrightPlugin.importer).toBe(
+      "import pluginPlaywright from 'eslint-plugin-playwright'"
+    )
+    expect(additionalPlaywrightPlugin.content).toContain(
+      "...pluginPlaywright.configs['flat/recommended']"
+    )
+    expect(additionalPlaywrightPlugin.content).toContain(
+      "files: ['e2e/**/*.{test,spec}.{js,ts,jsx,tsx}']"
+    )
+  })
+})
index 3a7dc801e16d6948f93a6b593790ec811506c95a..ee4d6ae4283d5e69b0be3def9f520da80a109488 100644 (file)
@@ -83,7 +83,7 @@ export function getAdditionalConfigs({
           importer: `import pluginVitest from '@vitest/eslint-plugin'`,
           content: `
   {
-    ...pluginVitest.configs['recommended'],
+    ...pluginVitest.configs.recommended,
     files: ['src/**/__tests__/*'],
   },`
         }
@@ -107,7 +107,8 @@ export function getAdditionalConfigs({
         'cypress/support/**/*.{js,ts,jsx,tsx}'
       ]
         .map(JSON.stringify.bind(JSON))
-        .join(',\n      ')}
+        .join(',\n      ')
+        .replace(/"/g, "'")} // use single quotes as in the other configs
     ],
   },`
         }