Bladeren bron

Merge pull request #5211 from ConnectAI-E/feature/jest

feat: jest
Lloyd Zhou 1 jaar geleden
bovenliggende
commit
ba58018a15
6 gewijzigde bestanden met toevoegingen van 755 en 12 verwijderingen
  1. 1 1
      app/store/prompt.ts
  2. 21 0
      jest.config.ts
  3. 2 0
      jest.setup.ts
  4. 12 4
      package.json
  5. 9 0
      test/sum-module.test.ts
  6. 710 7
      yarn.lock

+ 1 - 1
app/store/prompt.ts

@@ -151,7 +151,7 @@ export const usePromptStore = createPersistStore(
       if (typeof window === "undefined") {
         return;
       }
-      
+
       const PROMPT_URL = "./prompts.json";
 
       type PromptList = Array<[string, string]>;

+ 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";

+ 12 - 4
package.json

@@ -6,16 +6,18 @@
     "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",
+    "build": "yarn test:ci && 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": "yarn test:ci && 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",
+    "app:build": "yarn test:ci && 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"
+    "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",
@@ -54,6 +56,9 @@
   "devDependencies": {
     "@tauri-apps/api": "^1.6.0",
     "@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/js-yaml": "4.0.9",
     "@types/lodash-es": "^4.17.12",
     "@types/node": "^20.11.30",
@@ -69,8 +74,11 @@
     "eslint-plugin-prettier": "^5.1.3",
     "eslint-plugin-unused-imports": "^3.2.0",
     "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",

+ 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);
+  });
+});

File diff suppressed because it is too large
+ 710 - 7
yarn.lock


Some files were not shown because too many files changed in this diff