diff --git a/API-Project/src/controllers/ingredients.controller.ts b/API-Project/src/controllers/ingredients.controller.ts index b4a6094..900bbc5 100644 --- a/API-Project/src/controllers/ingredients.controller.ts +++ b/API-Project/src/controllers/ingredients.controller.ts @@ -8,14 +8,15 @@ const ingredient_gw = new IngredientsGateway() IngredientsController.get('/filter/:prompt', async (req, res) => { - const letter = req.params.prompt; + const prompt = req.params.prompt; - if (!letter) { - throw new Exceptions.BadRequestException('prompt is invalid!'); - } + if (!prompt) { + res.status(400).send('invalid parameter or no parameter') + return + } try { - const ingredient = await ingredient_gw.filter(letter); + const ingredient = await ingredient_gw.filter(prompt); if (ingredient == null) { res.status(404).send('Not found'); @@ -31,9 +32,10 @@ IngredientsController.get('/filter/:prompt', async (req, res) => { IngredientsController.get('/letter/:letter', async (req, res) => { const letter = req.params.letter; - if (!letter) { - throw new Exceptions.BadRequestException('Letter is invalid!'); - } + if (!letter) { + res.status(400).send('invalid parameter or no parameter') + return + } try { const ingredient = await ingredient_gw.getByLetter(letter); diff --git a/API-Project/src/server.ts b/API-Project/src/server.ts index 95bea7a..acbe17e 100644 --- a/API-Project/src/server.ts +++ b/API-Project/src/server.ts @@ -22,15 +22,15 @@ app.use('/ingredients', IngredientsController); app.use('/recipes', RecipesController); app.use('/steps', StepsController); -const port = process.env.PORT || 3000; +const port = Number(process.env.PORT) || 3000; -export const startServer = () => { - return app.listen(port, () => console.log(`App listening on PORT ${port}`)); +export const startServer = (port_to_use: number) => { + return app.listen(port_to_use, () => 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(); + startServer(port); } export default app; diff --git a/API-Project/tests/app.spec.ts b/API-Project/tests/app.spec.ts index 187765b..ac77852 100644 --- a/API-Project/tests/app.spec.ts +++ b/API-Project/tests/app.spec.ts @@ -4,9 +4,10 @@ import { Server, IncomingMessage, ServerResponse } from 'http'; describe('GET /api/endpoint', () => { let server: Server; + const port = 3000 beforeAll(() => { - server = startServer(); + server = startServer(3000); }); afterAll((done) => { diff --git a/API-Project/tests/ingredients.spec.ts b/API-Project/tests/ingredients.spec.ts index a4da5ac..0c46bc3 100644 --- a/API-Project/tests/ingredients.spec.ts +++ b/API-Project/tests/ingredients.spec.ts @@ -5,32 +5,67 @@ import { Server, IncomingMessage, ServerResponse } from 'http'; describe('GET /ingredients', () => { let server: Server; - + const port = 3001 + beforeAll(() => { - server = startServer(); + server = startServer(3001); }); afterAll((done) => { - server.close(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); - }); + // /ingredients/ + it('should return a 200 status code', async () => { + const response = await request(app).get('/ingredients/'); + expect(response.status).toBe(200); + }); + + // /ingredients/:id + 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); - }); + it('should return a 404 status code', async () => { + const response = await request(app).get('/ingredients/8024'); + expect(response.status).toBe(404); + }); + + // /ingredients/letter/:letter + it('should return a 200 status code', async () => { + const response = await request(app).get('/ingredients/letter/l'); + expect(response.status).toBe(200); + }); + it('should return a 404 status code', async () => { + const response = await request(app).get('/ingredients/letter/oui'); + expect(response.status).toBe(404); + }); + + it('should return a 400 status code', async () => { + const response = await request(app).get('/ingredients/letter/'); + expect(response.status).toBe(400); + }); + + // /ingredients/filter/:prompt + it('should return a 200 status code', async () => { + const response = await request(app).get('/ingredients/filter/car'); + expect(response.status).toBe(200); + }); + + it('should return a 404 status code', async () => { + const response = await request(app).get('/ingredients/filter/slumaprottube'); + expect(response.status).toBe(404); + }); + + it('should return a 400 status code', async () => { + const response = await request(app).get('/ingredients/filter/'); + expect(response.status).toBe(400); + }); }); \ No newline at end of file