From 8d3db4fb67af0b2cd34b7b3b2432eb735fe9a93d Mon Sep 17 00:00:00 2001 From: clfreville2 Date: Sat, 4 Mar 2023 09:20:32 +0100 Subject: [PATCH] Setup a sample test [CI SKIP] --- .eslintrc.js | 6 ++++++ README.md | 1 + package.json | 3 +++ src/App.test.js | 8 -------- src/components/login/Login.js | 1 - src/components/main/Main.js | 1 - src/components/register/Register.js | 1 - test/App.test.jsx | 12 ++++++++++++ test/setupTests.js | 1 + vite.config.js | 15 +++++++-------- 10 files changed, 30 insertions(+), 19 deletions(-) delete mode 100644 src/App.test.js create mode 100644 test/App.test.jsx create mode 100644 test/setupTests.js diff --git a/.eslintrc.js b/.eslintrc.js index e7a6371..8fa6fb4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -3,6 +3,9 @@ module.exports = { ecmaVersion: 2021, sourceType: 'module' }, + env: { + browser: true, + }, plugins: [ 'react', 'react-hooks' @@ -13,6 +16,9 @@ module.exports = { 'plugin:react/jsx-runtime', 'plugin:react-hooks/recommended' ], + rules: { + 'react/no-unescaped-entities': 0 + }, settings: { react: { version: 'detect' diff --git a/README.md b/README.md index a3565bf..5ce481f 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ Une fois le dépôt cloné : npm install # Installe les dépendances npm run build # Construit l'application npm run dev # Démarre le serveur de développement +npm run test # Lance les tests ``` ## Contribuer diff --git a/package.json b/package.json index 9d474b7..488052a 100644 --- a/package.json +++ b/package.json @@ -28,5 +28,8 @@ "test": "vitest", "dev": "vite", "lint": "eslint src/**/*.{js,jsx}" + }, + "devDependencies": { + "jsdom": "^21.1.0" } } diff --git a/src/App.test.js b/src/App.test.js deleted file mode 100644 index 1f03afe..0000000 --- a/src/App.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import { render, screen } from '@testing-library/react'; -import App from './App'; - -test('renders learn react link', () => { - render(); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/src/components/login/Login.js b/src/components/login/Login.js index 99a47ad..c889bba 100644 --- a/src/components/login/Login.js +++ b/src/components/login/Login.js @@ -1,4 +1,3 @@ -import React from 'react' import '../../css/login.css' import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; diff --git a/src/components/main/Main.js b/src/components/main/Main.js index 447f04a..24ac26d 100644 --- a/src/components/main/Main.js +++ b/src/components/main/Main.js @@ -1,4 +1,3 @@ -import React from 'react' import '../../css/main.css' export function MainPage() { diff --git a/src/components/register/Register.js b/src/components/register/Register.js index b0cdf54..22eb548 100644 --- a/src/components/register/Register.js +++ b/src/components/register/Register.js @@ -1,4 +1,3 @@ -import React from 'react' import '../../css/login.css' import { library } from '@fortawesome/fontawesome-svg-core'; diff --git a/test/App.test.jsx b/test/App.test.jsx new file mode 100644 index 0000000..84f6fbd --- /dev/null +++ b/test/App.test.jsx @@ -0,0 +1,12 @@ +import { render } from '@testing-library/react'; +import { describe, test, expect } from 'vitest'; + +const App = () =>
learn react
+ +describe('Application', function () { + test('renders learn react link', () => { + const { getByText } = render(); + const linkElement = getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); + }); +}); diff --git a/test/setupTests.js b/test/setupTests.js new file mode 100644 index 0000000..c44951a --- /dev/null +++ b/test/setupTests.js @@ -0,0 +1 @@ +import '@testing-library/jest-dom' diff --git a/vite.config.js b/vite.config.js index 1d0cbaf..1eb2b0b 100644 --- a/vite.config.js +++ b/vite.config.js @@ -6,7 +6,7 @@ import fs from 'fs/promises'; export default defineConfig({ esbuild: { loader: "jsx", - include: /src\/.*\.jsx?$/, + include: /(src|test)\/.*\.jsx?$/, exclude: [], }, build: { @@ -15,19 +15,18 @@ export default defineConfig({ test: { globals: true, environment: 'jsdom', + setupFiles: './test/setupTests.js' }, - plugins: [react({ - loader: { '.js': 'jsx' }, - })], + plugins: [react()], optimizeDeps: { esbuildOptions: { plugins: [ { - name: "load-js-files-as-jsx", + name: 'load-js-files-as-jsx', setup(build) { - build.onLoad({ filter: /src\/.*\.js$/ }, async (args) => ({ - loader: "jsx", - contents: await fs.readFile(args.path, "utf8"), + build.onLoad({ filter: /(src|test)\/.*\.js$/ }, async (args) => ({ + loader: 'jsx', + contents: await fs.readFile(args.path, 'utf8'), })); }, },