Skip to content

Commit 227a8cb

Browse files
chore: replace jest with vitest in backend project (#2191)
1 parent eb57ef0 commit 227a8cb

12 files changed

+1896
-3301
lines changed

backend/package-lock.json

+1,682-3,052
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/package.json

+9-41
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,11 @@
1414
"start:prod": "node dist/main",
1515
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
1616
"lint:staged": "./node_modules/.bin/lint-staged",
17-
"make-badges": "istanbul-badges-readme --logo=jest --exitCode=1",
17+
"make-badges": "istanbul-badges-readme --logo=vitest --exitCode=1",
1818
"make-badges:ci": "npm run make-badges -- --ci",
19-
"test": "jest",
20-
"test:watch": "jest --watch",
21-
"test:cov": "jest --coverage --detectOpenHandles --forceExit",
22-
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
23-
"test:e2e": "jest --config ./test/jest-e2e.json"
19+
"test": "vitest --dir src",
20+
"test:cov": "vitest run --coverage",
21+
"test:e2e": "vitest --dir test"
2422
},
2523
"dependencies": {
2624
"@nestjs/cli": "^10.4.7",
@@ -50,11 +48,11 @@
5048
"@swc/cli": "^0.5.0",
5149
"@swc/core": "^1.9.1",
5250
"@types/express": "^5.0.0",
53-
"@types/jest": "^29.0.0",
5451
"@types/node": "^22.0.0",
5552
"@types/supertest": "^6.0.0",
5653
"@typescript-eslint/eslint-plugin": "^7.0.0",
5754
"@typescript-eslint/parser": "^7.0.0",
55+
"@vitest/coverage-v8": "^2.1.8",
5856
"eslint": "^8.57.0",
5957
"eslint-config-airbnb-base": "^15.0.0",
6058
"eslint-config-prettier": "^9.0.0",
@@ -64,48 +62,18 @@
6462
"eslint-plugin-prettier": "^5.0.0",
6563
"eslint-plugin-promise": "^6.1.1",
6664
"istanbul-badges-readme": "^1.9.0",
67-
"jest": "^29.7.0",
68-
"jest-badges": "^0.1.3",
69-
"jest-sonar-reporter": "^2.0.0",
7065
"lint-staged": "^15.2.4",
7166
"prettier": "^3.0.3",
7267
"prisma": "^5.7.0",
7368
"source-map-support": "^0.5.21",
7469
"supertest": "^7.0.0",
75-
"ts-jest": "^29.1.1",
7670
"ts-loader": "^9.5.0",
7771
"ts-node": "^10.9.1",
7872
"tsconfig-paths": "^4.2.0",
79-
"typescript": "^5.2.2"
80-
},
81-
"jest": {
82-
"moduleFileExtensions": [
83-
"js",
84-
"json",
85-
"ts"
86-
],
87-
"rootDir": "src",
88-
"testRegex": ".*\\.spec\\.ts$",
89-
"transform": {
90-
"^.+\\.(t|j)s$": "ts-jest"
91-
},
92-
"collectCoverage": true,
93-
"collectCoverageFrom": [
94-
"**/*.(t|j)s"
95-
],
96-
"coverageDirectory": "../coverage",
97-
"coveragePathIgnorePatterns": [
98-
"/node_modules/",
99-
"/test/"
100-
],
101-
"coverageReporters": [
102-
"text",
103-
"lcov",
104-
"cobertura",
105-
"jest-badges"
106-
],
107-
"testEnvironment": "node",
108-
"testResultsProcessor": "jest-sonar-reporter"
73+
"typescript": "^5.2.2",
74+
"unplugin-swc": "^1.5.1",
75+
"vitest": "^2.1.8",
76+
"vitest-sonar-reporter": "^2.0.0"
10977
},
11078
"lint-staged": {
11179
"*.{js,ts}": "./node_modules/.bin/eslint --cache --fix"

backend/src/app.spec.ts

+13-14
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
1-
import {NestExpressApplication} from '@nestjs/platform-express';
2-
import {bootstrap} from "./app";
3-
jest.mock('prom-client', () => ({
4-
Registry: jest.fn().mockImplementation(() => ({
5-
})),
6-
collectDefaultMetrics: jest.fn().mockImplementation(() => ({
7-
})),
1+
import { NestExpressApplication } from "@nestjs/platform-express";
2+
import { bootstrap } from "./app";
3+
4+
vi.mock("prom-client", () => ({
5+
Registry: vi.fn().mockImplementation(() => ({})),
6+
collectDefaultMetrics: vi.fn().mockImplementation(() => ({})),
87
}));
9-
jest.mock('express-prom-bundle', () => ({
10-
default: jest.fn().mockImplementation(() => ({
11-
})),
8+
vi.mock("express-prom-bundle", () => ({
9+
default: vi.fn().mockImplementation(() => ({})),
1210
}));
13-
jest.mock('./prom', () => ({
14-
metricsMiddleware: jest.fn().mockImplementation((req, res, next) => next()),
11+
vi.mock("./prom", () => ({
12+
metricsMiddleware: vi.fn().mockImplementation((_req, _res, next) => next()),
1513
}));
16-
describe('main', () => {
14+
15+
describe("main", () => {
1716
let app: NestExpressApplication;
1817

1918
beforeAll(async () => {
@@ -24,7 +23,7 @@ describe('main', () => {
2423
await app.close();
2524
});
2625

27-
it('should start the application', async () => {
26+
it("should start the application", async () => {
2827
expect(app).toBeDefined();
2928
});
3029
});
+7-8
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
import {customLogger} from './logger.config';
1+
import { customLogger } from "./logger.config";
22

3-
describe('CustomLogger', () => {
4-
it('should be defined', () => {
3+
describe("CustomLogger", () => {
4+
it("should be defined", () => {
55
expect(customLogger).toBeDefined();
66
});
77

8-
it('should log a message', () => {
9-
10-
const spy = jest.spyOn(customLogger, 'verbose');
11-
customLogger.verbose('Test message');
12-
expect(spy).toHaveBeenCalledWith('Test message');
8+
it("should log a message", () => {
9+
const spy = vi.spyOn(customLogger, "verbose");
10+
customLogger.verbose("Test message");
11+
expect(spy).toHaveBeenCalledWith("Test message");
1312
spy.mockRestore();
1413
});
1514
});
+17-16
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import {Test} from '@nestjs/testing';
2-
import {HTTPLoggerMiddleware} from './req.res.logger';
3-
import {Request, Response} from 'express';
4-
import {Logger} from '@nestjs/common';
1+
import { Test } from "@nestjs/testing";
2+
import { HTTPLoggerMiddleware } from "./req.res.logger";
3+
import { Request, Response } from "express";
4+
import { Logger } from "@nestjs/common";
55

6-
describe('HTTPLoggerMiddleware', () => {
6+
describe("HTTPLoggerMiddleware", () => {
77
let middleware: HTTPLoggerMiddleware;
88
let logger: Logger;
99

@@ -15,28 +15,29 @@ describe('HTTPLoggerMiddleware', () => {
1515
middleware = module.get<HTTPLoggerMiddleware>(HTTPLoggerMiddleware);
1616
logger = module.get<Logger>(Logger);
1717
});
18-
it('should log the correct information', () => {
18+
it("should log the correct information", () => {
1919
const request: Request = {
20-
method: 'GET',
21-
originalUrl: '/test',
22-
get: () => 'Test User Agent'
20+
method: "GET",
21+
originalUrl: "/test",
22+
get: () => "Test User Agent",
2323
} as unknown as Request;
2424

2525
const response: Response = {
2626
statusCode: 200,
27-
get: () => '100',
27+
get: () => "100",
2828
on: (event: string, cb: () => void) => {
29-
if (event === 'finish') {
29+
if (event === "finish") {
3030
cb();
3131
}
32-
}
32+
},
3333
} as unknown as Response;
3434

35-
const loggerSpy = jest.spyOn(middleware['logger'], 'log');
35+
const loggerSpy = vi.spyOn(middleware["logger"], "log");
3636

37-
middleware.use(request, response, () => {
38-
});
37+
middleware.use(request, response, () => {});
3938

40-
expect(loggerSpy).toHaveBeenCalledWith(`GET /test 200 100 - Test User Agent`);
39+
expect(loggerSpy).toHaveBeenCalledWith(
40+
`GET /test 200 100 - Test User Agent`,
41+
);
4142
});
4243
});

backend/src/middleware/req.res.logger.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ export class HTTPLoggerMiddleware implements NestMiddleware {
1010

1111
response.on("finish", () => {
1212
const { statusCode } = response;
13-
const contentLength = response.get("content-length") || '-';
13+
const contentLength = response.get("content-length") || "-";
1414
const hostedHttpLogFormat = `${method} ${originalUrl} ${statusCode} ${contentLength} - ${request.get(
15-
"user-agent"
15+
"user-agent",
1616
)}`;
1717
this.logger.log(hostedHttpLogFormat);
1818
});

0 commit comments

Comments
 (0)