Ver Fonte

feat: jest

Dogtiti há 1 ano atrás
pai
commit
1ef2aa35e9
5 ficheiros alterados com 829 adições e 81 exclusões
  1. 21 0
      jest.config.ts
  2. 2 0
      jest.setup.ts
  3. 82 74
      package.json
  4. 9 0
      test/sum-module.test.ts
  5. 715 7
      yarn.lock

+ 21 - 0
jest.config.ts

@@ -0,0 +1,21 @@
+import type { Config } from "jest";
+import nextJest from "next/jest.js";
+
+const createJestConfig = nextJest({
+  // Provide the path to your Next.js app to load next.config.js and .env files in your test environment
+  dir: "./",
+});
+
+// Add any custom config to be passed to Jest
+const config: Config = {
+  coverageProvider: "v8",
+  testEnvironment: "jsdom",
+  testMatch: ["**/*.test.js", "**/*.test.ts", "**/*.test.jsx", "**/*.test.tsx"],
+  setupFilesAfterEnv: ["<rootDir>/jest.setup.ts"],
+  moduleNameMapper: {
+    "^@/(.*)$": "<rootDir>/$1",
+  },
+};
+
+// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async
+export default createJestConfig(config);

+ 2 - 0
jest.setup.ts

@@ -0,0 +1,2 @@
+// Learn more: https://github.com/testing-library/jest-dom
+import "@testing-library/jest-dom";

+ 82 - 74
package.json

@@ -1,76 +1,84 @@
 {
-  "name": "nextchat",
-  "private": false,
-  "license": "mit",
-  "scripts": {
-    "mask": "npx tsx app/masks/build.ts",
-    "mask:watch": "npx watch \"yarn mask\" app/masks",
-    "dev": "concurrently -r \"yarn run mask:watch\" \"next dev\"",
-    "build": "yarn mask && cross-env BUILD_MODE=standalone next build",
-    "start": "next start",
-    "lint": "next lint",
-    "export": "yarn mask && cross-env BUILD_MODE=export BUILD_APP=1 next build",
-    "export:dev": "concurrently -r \"yarn mask:watch\"  \"cross-env BUILD_MODE=export BUILD_APP=1 next dev\"",
-    "app:dev": "concurrently -r \"yarn mask:watch\" \"yarn tauri dev\"",
-    "app:build": "yarn mask && yarn tauri build",
-    "prompts": "node ./scripts/fetch-prompts.mjs",
-    "prepare": "husky install",
-    "proxy-dev": "sh ./scripts/init-proxy.sh && proxychains -f ./scripts/proxychains.conf yarn dev"
-  },
-  "dependencies": {
-    "@fortaine/fetch-event-source": "^3.0.6",
-    "@hello-pangea/dnd": "^16.5.0",
-    "@next/third-parties": "^14.1.0",
-    "@svgr/webpack": "^6.5.1",
-    "@vercel/analytics": "^0.1.11",
-    "@vercel/speed-insights": "^1.0.2",
-    "emoji-picker-react": "^4.9.2",
-    "fuse.js": "^7.0.0",
-    "heic2any": "^0.0.4",
-    "html-to-image": "^1.11.11",
-    "lodash-es": "^4.17.21",
-    "mermaid": "^10.6.1",
-    "nanoid": "^5.0.3",
-    "next": "^14.1.1",
-    "node-fetch": "^3.3.1",
-    "react": "^18.2.0",
-    "react-dom": "^18.2.0",
-    "react-markdown": "^8.0.7",
-    "react-router-dom": "^6.15.0",
-    "rehype-highlight": "^6.0.0",
-    "rehype-katex": "^6.0.3",
-    "remark-breaks": "^3.0.2",
-    "remark-gfm": "^3.0.1",
-    "remark-math": "^5.1.1",
-    "sass": "^1.59.2",
-    "spark-md5": "^3.0.2",
-    "use-debounce": "^9.0.4",
-    "zustand": "^4.3.8"
-  },
-  "devDependencies": {
-    "@tauri-apps/cli": "1.5.11",
-    "@types/lodash-es": "^4.17.12",
-    "@types/node": "^20.11.30",
-    "@types/react": "^18.2.70",
-    "@types/react-dom": "^18.2.7",
-    "@types/react-katex": "^3.0.0",
-    "@types/spark-md5": "^3.0.4",
-    "concurrently": "^8.2.2",
-    "cross-env": "^7.0.3",
-    "eslint": "^8.49.0",
-    "eslint-config-next": "13.4.19",
-    "eslint-config-prettier": "^8.8.0",
-    "eslint-plugin-prettier": "^5.1.3",
-    "husky": "^8.0.0",
-    "lint-staged": "^13.2.2",
-    "prettier": "^3.0.2",
-    "tsx": "^4.16.0",
-    "typescript": "5.2.2",
-    "watch": "^1.0.2",
-    "webpack": "^5.88.1"
-  },
-  "resolutions": {
-    "lint-staged/yaml": "^2.2.2"
-  },
-  "packageManager": "yarn@1.22.19"
+    "name": "nextchat",
+    "private": false,
+    "license": "mit",
+    "scripts": {
+        "mask": "npx tsx app/masks/build.ts",
+        "mask:watch": "npx watch \"yarn mask\" app/masks",
+        "dev": "concurrently -r \"yarn run mask:watch\" \"next dev\"",
+        "build": "yarn mask && cross-env BUILD_MODE=standalone next build",
+        "start": "next start",
+        "lint": "next lint",
+        "export": "yarn mask && cross-env BUILD_MODE=export BUILD_APP=1 next build",
+        "export:dev": "concurrently -r \"yarn mask:watch\"  \"cross-env BUILD_MODE=export BUILD_APP=1 next dev\"",
+        "app:dev": "concurrently -r \"yarn mask:watch\" \"yarn tauri dev\"",
+        "app:build": "yarn mask && yarn tauri build",
+        "prompts": "node ./scripts/fetch-prompts.mjs",
+        "prepare": "husky install",
+        "proxy-dev": "sh ./scripts/init-proxy.sh && proxychains -f ./scripts/proxychains.conf yarn dev",
+        "test": "jest --watch",
+        "test:ci": "jest --ci"
+    },
+    "dependencies": {
+        "@fortaine/fetch-event-source": "^3.0.6",
+        "@hello-pangea/dnd": "^16.5.0",
+        "@next/third-parties": "^14.1.0",
+        "@svgr/webpack": "^6.5.1",
+        "@vercel/analytics": "^0.1.11",
+        "@vercel/speed-insights": "^1.0.2",
+        "emoji-picker-react": "^4.9.2",
+        "fuse.js": "^7.0.0",
+        "heic2any": "^0.0.4",
+        "html-to-image": "^1.11.11",
+        "lodash-es": "^4.17.21",
+        "mermaid": "^10.6.1",
+        "nanoid": "^5.0.3",
+        "next": "^14.1.1",
+        "node-fetch": "^3.3.1",
+        "react": "^18.2.0",
+        "react-dom": "^18.2.0",
+        "react-markdown": "^8.0.7",
+        "react-router-dom": "^6.15.0",
+        "rehype-highlight": "^6.0.0",
+        "rehype-katex": "^6.0.3",
+        "remark-breaks": "^3.0.2",
+        "remark-gfm": "^3.0.1",
+        "remark-math": "^5.1.1",
+        "sass": "^1.59.2",
+        "spark-md5": "^3.0.2",
+        "use-debounce": "^9.0.4",
+        "zustand": "^4.3.8"
+    },
+    "devDependencies": {
+        "@tauri-apps/cli": "1.5.11",
+        "@testing-library/jest-dom": "^6.4.8",
+        "@testing-library/react": "^16.0.0",
+        "@types/jest": "^29.5.12",
+        "@types/lodash-es": "^4.17.12",
+        "@types/node": "^20.11.30",
+        "@types/react": "^18.2.70",
+        "@types/react-dom": "^18.2.7",
+        "@types/react-katex": "^3.0.0",
+        "@types/spark-md5": "^3.0.4",
+        "concurrently": "^8.2.2",
+        "cross-env": "^7.0.3",
+        "eslint": "^8.49.0",
+        "eslint-config-next": "13.4.19",
+        "eslint-config-prettier": "^8.8.0",
+        "eslint-plugin-prettier": "^5.1.3",
+        "husky": "^8.0.0",
+        "jest": "^29.7.0",
+        "jest-environment-jsdom": "^29.7.0",
+        "lint-staged": "^13.2.2",
+        "prettier": "^3.0.2",
+        "ts-node": "^10.9.2",
+        "tsx": "^4.16.0",
+        "typescript": "5.2.2",
+        "watch": "^1.0.2",
+        "webpack": "^5.88.1"
+    },
+    "resolutions": {
+        "lint-staged/yaml": "^2.2.2"
+    },
+    "packageManager": "yarn@1.22.19"
 }

+ 9 - 0
test/sum-module.test.ts

@@ -0,0 +1,9 @@
+function sum(a: number, b: number) {
+  return a + b;
+}
+
+describe("sum module", () => {
+  test("adds 1 + 2 to equal 3", () => {
+    expect(sum(1, 2)).toBe(3);
+  });
+});

Diff do ficheiro suprimidas por serem muito extensas
+ 715 - 7
yarn.lock


Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff