Select Git revision
Forked from
COUETOUX Basile / FirefighterStarter
Source project has a limited visibility.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
app.test.js 3.24 KiB
// Description: Test des endpoints de base de l'application.
// Import de la librairie de test des endpoints
const request = require('supertest');
// Import de l'application
const { app } = require('../../src/index');
// Test des endpoints de base
describe('Endpoints de base', () => {
// Test de l'endpoint de status
test('GET /status devrait retourner status ok', async () => {
const res = await request(app).get('/status');
expect(res.statusCode).toEqual(200);
expect(res.body).toEqual({ 'status': 'ok' });
});
// Test de l'endpoint de récupération de toutes les tâches
test('GET /api/tasks devrait retourner toutes les tâches', async () => {
const res = await request(app).get('/api/tasks');
expect(res.statusCode).toEqual(200);
expect(Array.isArray(res.body)).toBe(true);
expect(res.body.length).toBeGreaterThan(0);
});
});
describe('GET /api/tasks/:id', () => {
// Test pour un ID existant (par exemple, ID = 1)
test('devrait retourner la tâche correspondante pour un ID existant', async () => {
const res = await request(app).get('/api/tasks/1');
expect(res.statusCode).toEqual(200);
expect(res.body).toEqual({ id: 1, description: 'Apprendre Git', done: false });
});
// Test pour un ID inexistant (par exemple, ID = 999)
test('devrait retourner 404 pour un ID inexistant', async () => {
const res = await request(app).get('/api/tasks/999');
expect(res.statusCode).toEqual(404);
expect(res.body).toEqual({ error: 'Tâche non trouvée' });
});
});
describe('POST /api/tasks', () => {
test('should create a new task and return it', async () => {
const response = await request(app)
.post('/api/tasks')
.send({ description: "Nouvelle tâche" });
expect(response.statusCode).toBe(201);
expect(response.body).toHaveProperty('id');
expect(response.body.description).toBe("Nouvelle tâche");
expect(response.body.done).toBe(false);
});
test('should return 400 if description is missing', async () => {
const response = await request(app)
.post('/api/tasks')
.send({});
expect(response.statusCode).toBe(400);
expect(response.body).toHaveProperty('error', 'La description est requise');
});
});
describe('DELETE /api/tasks/:id', () => {
test('should delete an existing task and return 204', async () => {
const addResponse = await request(app)
.post('/api/tasks')
.send({ description: "Task to delete via DELETE endpoint" });
expect(addResponse.statusCode).toBe(201);
const taskId = addResponse.body.id;
const deleteResponse = await request(app).delete(`/api/tasks/${taskId}`);
expect(deleteResponse.statusCode).toBe(204);
const getResponse = await request(app).get(`/api/tasks/${taskId}`);
expect(getResponse.statusCode).toBe(404);
});
test('should return 404 when trying to delete a non-existent task', async () => {
const response = await request(app).delete('/api/tasks/99999');
expect(response.statusCode).toBe(404);
expect(response.body).toEqual({ error: 'Tâche non trouvée' });
});
});