From c5866443c07b6244b6b25168fee5e2908c85e893 Mon Sep 17 00:00:00 2001 From: Remi R Date: Fri, 8 Dec 2023 09:15:44 +0100 Subject: [PATCH] tests: add tests for IngredientsController for route ingredients/ and ingredients/:id --- .../src/controllers/ingredients.controller.ts | 3 +- API-Project/src/server.ts | 9 ++++- API-Project/tests/app.spec.ts | 24 +++++++++---- API-Project/tests/ingredients.spec.ts | 36 +++++++++++++++++++ 4 files changed, 63 insertions(+), 9 deletions(-) create mode 100644 API-Project/tests/ingredients.spec.ts diff --git a/API-Project/src/controllers/ingredients.controller.ts b/API-Project/src/controllers/ingredients.controller.ts index 822ca95..b4a6094 100644 --- a/API-Project/src/controllers/ingredients.controller.ts +++ b/API-Project/src/controllers/ingredients.controller.ts @@ -54,7 +54,8 @@ IngredientsController.get('/:id', async (req, res) => { const id = Number(req.params.id); if (!Number.isInteger(id)) { - throw new Exceptions.BadRequestException('id invalid !'); + res.status(400).send('invalid parameter') + return } try { diff --git a/API-Project/src/server.ts b/API-Project/src/server.ts index 1eb8916..95bea7a 100644 --- a/API-Project/src/server.ts +++ b/API-Project/src/server.ts @@ -24,6 +24,13 @@ app.use('/steps', StepsController); const port = process.env.PORT || 3000; -export const server = app.listen(port, () => console.log(`App listening on PORT ${port}`)); +export const startServer = () => { + return app.listen(port, () => console.log(`App listening on PORT ${port}`)); +}; + +// Exécutez le serveur uniquement si le module est le point d'entrée principal +if (require.main === module) { + startServer(); +} export default app; diff --git a/API-Project/tests/app.spec.ts b/API-Project/tests/app.spec.ts index e14d333..187765b 100644 --- a/API-Project/tests/app.spec.ts +++ b/API-Project/tests/app.spec.ts @@ -1,13 +1,23 @@ import request from 'supertest'; -import app, {server} from '../src/server'; +import app, { startServer } from '../src/server'; +import { Server, IncomingMessage, ServerResponse } from 'http'; describe('GET /api/endpoint', () => { - it('should return a 200 status code', async () => { - const response = await request(app).get('/'); - expect(response.status).toBe(200); - }); + let server: Server; + + beforeAll(() => { + server = startServer(); + }); - // Ecrire d'autres tests ici + afterAll((done) => { + server.close(done); + }); + + it('should return a 200 status code', async () => { + const response = await request(app).get('/'); + expect(response.status).toBe(200); + }); + + // Ecrire d'autres tests ici - server.close() }); \ No newline at end of file diff --git a/API-Project/tests/ingredients.spec.ts b/API-Project/tests/ingredients.spec.ts new file mode 100644 index 0000000..a4da5ac --- /dev/null +++ b/API-Project/tests/ingredients.spec.ts @@ -0,0 +1,36 @@ +import request from 'supertest'; +import app, { startServer } from '../src/server'; +import { Server, IncomingMessage, ServerResponse } from 'http'; + + +describe('GET /ingredients', () => { + let server: Server; + + beforeAll(() => { + server = startServer(); + }); + + afterAll((done) => { + server.close(done); + }); + it('should return a 200 status code', async () => { + const response = await request(app).get('/ingredients/'); + expect(response.status).toBe(200); + }); + + it('should return a 200 status code', async () => { + const response = await request(app).get('/ingredients/1'); + expect(response.status).toBe(200); + }); + + it('should return a 400 status code', async () => { + const response = await request(app).get('/ingredients/l'); + expect(response.status).toBe(400); + }); + + it('should return a 404 status code', async () => { + const response = await request(app).get('/ingredients/8024'); + expect(response.status).toBe(404); + }); + +}); \ No newline at end of file