tests: add more test on IngredientsController
continuous-integration/drone/push Build is failing Details

WORK-RRE
Rémi REGNAULT 1 year ago
parent c5866443c0
commit e3e444acda

@ -8,14 +8,15 @@ const ingredient_gw = new IngredientsGateway()
IngredientsController.get('/filter/:prompt', async (req, res) => { IngredientsController.get('/filter/:prompt', async (req, res) => {
const letter = req.params.prompt; const prompt = req.params.prompt;
if (!letter) { if (!prompt) {
throw new Exceptions.BadRequestException('prompt is invalid!'); res.status(400).send('invalid parameter or no parameter')
} return
}
try { try {
const ingredient = await ingredient_gw.filter(letter); const ingredient = await ingredient_gw.filter(prompt);
if (ingredient == null) { if (ingredient == null) {
res.status(404).send('Not found'); res.status(404).send('Not found');
@ -31,9 +32,10 @@ IngredientsController.get('/filter/:prompt', async (req, res) => {
IngredientsController.get('/letter/:letter', async (req, res) => { IngredientsController.get('/letter/:letter', async (req, res) => {
const letter = req.params.letter; const letter = req.params.letter;
if (!letter) { if (!letter) {
throw new Exceptions.BadRequestException('Letter is invalid!'); res.status(400).send('invalid parameter or no parameter')
} return
}
try { try {
const ingredient = await ingredient_gw.getByLetter(letter); const ingredient = await ingredient_gw.getByLetter(letter);

@ -22,15 +22,15 @@ app.use('/ingredients', IngredientsController);
app.use('/recipes', RecipesController); app.use('/recipes', RecipesController);
app.use('/steps', StepsController); app.use('/steps', StepsController);
const port = process.env.PORT || 3000; const port = Number(process.env.PORT) || 3000;
export const startServer = () => { export const startServer = (port_to_use: number) => {
return app.listen(port, () => console.log(`App listening on PORT ${port}`)); 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 // Exécutez le serveur uniquement si le module est le point d'entrée principal
if (require.main === module) { if (require.main === module) {
startServer(); startServer(port);
} }
export default app; export default app;

@ -4,9 +4,10 @@ import { Server, IncomingMessage, ServerResponse } from 'http';
describe('GET /api/endpoint', () => { describe('GET /api/endpoint', () => {
let server: Server<typeof IncomingMessage, typeof ServerResponse>; let server: Server<typeof IncomingMessage, typeof ServerResponse>;
const port = 3000
beforeAll(() => { beforeAll(() => {
server = startServer(); server = startServer(3000);
}); });
afterAll((done) => { afterAll((done) => {

@ -5,32 +5,67 @@ import { Server, IncomingMessage, ServerResponse } from 'http';
describe('GET /ingredients', () => { describe('GET /ingredients', () => {
let server: Server<typeof IncomingMessage, typeof ServerResponse>; let server: Server<typeof IncomingMessage, typeof ServerResponse>;
const port = 3001
beforeAll(() => { beforeAll(() => {
server = startServer(); server = startServer(3001);
}); });
afterAll((done) => { 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 () => { // /ingredients/
const response = await request(app).get('/ingredients/1'); it('should return a 200 status code', async () => {
expect(response.status).toBe(200); 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);
});
// /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);
});
it('should return a 400 status code', async () => { // /ingredients/filter/:prompt
const response = await request(app).get('/ingredients/l'); it('should return a 200 status code', async () => {
expect(response.status).toBe(400); const response = await request(app).get('/ingredients/filter/car');
}); expect(response.status).toBe(200);
});
it('should return a 404 status code', async () => { it('should return a 404 status code', async () => {
const response = await request(app).get('/ingredients/8024'); const response = await request(app).get('/ingredients/filter/slumaprottube');
expect(response.status).toBe(404); 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);
});
}); });
Loading…
Cancel
Save