diff --git a/microservices/navigation_qcm/jest.config.js b/microservices/navigation_qcm/jest.config.js new file mode 100644 index 0000000000000000000000000000000000000000..da0ba537dd94fa7a8041b15ec2e009d9cab8af11 --- /dev/null +++ b/microservices/navigation_qcm/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + transform: {'^.+\\.ts?$': 'ts-jest'}, + testEnvironment: 'node', + testRegex: '/tests/.*\\.(test|spec)?\\.(ts|tsx)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'] +}; \ No newline at end of file diff --git a/microservices/navigation_qcm/package.json b/microservices/navigation_qcm/package.json index 886f633de8a2d49628ef5e350831d1e819b92cea..53a72526f6baf8fd72b444d236fa7227fd80c63f 100644 --- a/microservices/navigation_qcm/package.json +++ b/microservices/navigation_qcm/package.json @@ -19,7 +19,8 @@ "database:deploy:prod": "npm run database:migrate:deploy && npm run database:seed:prod", "start:dev": "npm run prisma:generate && npx dotenvx run -- npx nodemon src/app.ts", "start:prod": "npm run build && npx dotenvx run -- NODE_ENV=production npx node dist/src/app.js", - "clean": "rm -R dist/*" + "clean": "rm -R dist/*", + "test": "jest" }, "prisma": { "seed": "node dist/prisma/seed" @@ -45,14 +46,17 @@ "@types/bcryptjs": "^2.4.6", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", + "@types/jest": "^29.5.14", "@types/jsonwebtoken": "^9.0.6", "@types/morgan": "^1.9.9", "@types/multer": "^1.4.11", "@types/node": "^20.12.7", + "jest": "^29.7.0", "node": "^20.12.2", "nodemon": "^3.1.0", "npm": "^10.5.2", "prisma": "^6.3.1", + "ts-jest": "^29.2.6", "ts-node": "^10.9.2", "tsx": "^4.7.2", "typescript": "^5.4.5" diff --git a/microservices/navigation_qcm/src/express/Server.ts b/microservices/navigation_qcm/src/express/Server.ts index 48ced0efafd6fa7c9aefc892bae251c06279543c..04365f5c4864fcf6ed89f8a9f43ddf0420e2b892 100644 --- a/microservices/navigation_qcm/src/express/Server.ts +++ b/microservices/navigation_qcm/src/express/Server.ts @@ -101,6 +101,11 @@ export class Server { this.server = http.createServer(this.backend); } + + public get app() { + return this.backend; + } + run() { this.server.listen(Config.api.port, '0.0.0.0', () => { const { diff --git a/microservices/navigation_qcm/tests/index.test.ts b/microservices/navigation_qcm/tests/index.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..b202cac810fda04df4b7500b048812468fb0e615 --- /dev/null +++ b/microservices/navigation_qcm/tests/index.test.ts @@ -0,0 +1,11 @@ +import { describe } from 'node:test'; +import { expect, test } from '@jest/globals'; +import { calcNoteBaremeFed } from '../src/calcFunctions'; + +describe('testing index file', () => { + test('empty string should result in zero', () => { + expect(calcNoteBaremeFed(50, 50)).toBe(6); + expect(calcNoteBaremeFed(0, 50)).toBe(1); + expect(calcNoteBaremeFed(0, 50)).not.toBe(0); + }); +}); \ No newline at end of file diff --git a/testsEndPoints/jest.config.js b/testsEndPoints/jest.config.js new file mode 100644 index 0000000000000000000000000000000000000000..da0ba537dd94fa7a8041b15ec2e009d9cab8af11 --- /dev/null +++ b/testsEndPoints/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + transform: {'^.+\\.ts?$': 'ts-jest'}, + testEnvironment: 'node', + testRegex: '/tests/.*\\.(test|spec)?\\.(ts|tsx)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'] +}; \ No newline at end of file diff --git a/testsEndPoints/package.json b/testsEndPoints/package.json new file mode 100644 index 0000000000000000000000000000000000000000..eea17fc8756d6e1213bdf6b23fecde14a114124a --- /dev/null +++ b/testsEndPoints/package.json @@ -0,0 +1,21 @@ +{ + "name": "testsendpoints", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "jest" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@types/jest": "^29.5.14", + "jest": "^29.7.0", + "ts-jest": "^29.2.6" + }, + "dependencies": { + "@types/supertest": "^6.0.2", + "supertest": "^7.0.0" + } +} diff --git a/testsEndPoints/tests/navigation.test.ts b/testsEndPoints/tests/navigation.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..4bfac0c55a60ccd5df56f98a830a7680ce7f5e18 --- /dev/null +++ b/testsEndPoints/tests/navigation.test.ts @@ -0,0 +1,77 @@ +import { expect, jest } from '@jest/globals'; +import request from 'supertest'; +import { describe, it } from 'node:test'; +import Server from '../../microservices/navigation_qcm/src/express/Server'; + +const server = new Server(); + +describe('POST /join', () => { + it('manque des parametres', async () => { + const response = await request(server.app).post('/join').send({}); + + expect(response.status).toBe(400); + // expect(response.body).toEqual({ message: 'Hello, world!' }); + }); + + it('nombre de questions QCM', async () => { + const response = await request(server.app).post('/join').send({}); + + expect(response.status).toBe(401); + }); + + it('code accès QCM', async () => { + const response = await request(server.app).post('/join').send({}); + + expect(response.status).toBe(401); + }); + + it('existance du QCM', async () => { + const response = await request(server.app).post('/join').send({}); + + expect(response.status).toBe(404); + }); + }); + + describe('GET /reponseCorrect/:QCM_ID', () => { + // it('manque des parametres', async () => { + // const QCM_ID = 1; + // jest.spyOn(db.question, 'findMany').mockResolvedValue([ + // { + // idQCM: QCM_ID, + // numeric: null, + // choix: [ + // { idChoix: 1, isCorrect: true }, + // { idChoix: 2, isCorrect: false } + // ] + // }, + // { + // idQCM: QCM_ID, + // numeric: 5, + // choix: [] + // } + // ]); + + + // const response = await request(server.app).post('/reponseCorrect/${QCM_ID}').send({}); + + // expect(response.status).toBe(400); + // }); + + // it('nombre de questions QCM', async () => { + // const response = await request(server.app).post('/reponseCorrect/${QCM_ID}').send({}); + + // expect(response.status).toBe(401); + // }); + + // it('code accès QCM', async () => { + // const response = await request(server.app).post('/reponseCorrect/${QCM_ID}').send({}); + + // expect(response.status).toBe(401); + // }); + + // it('existance du QCM', async () => { + // const response = await request(server.app).post('/reponseCorrect/${QCM_ID}').send({}); + + // expect(response.status).toBe(404); + // }); + }); \ No newline at end of file