Skip to content
Snippets Groups Projects
Select Git revision
  • 5764a7247ee3c44dfce0babeb44a71ed5eb4942a
  • main default protected
  • develop
3 results

app.test.js

Blame
  • 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' });
        });
    
    });