Skip to content

BDD-60 - Suppression source Heriade

1. User Story

En tant qu'administrateur,
Je veux supprimer une source Heriade,
Afin de nettoyer les sources obsolètes.

2. Critères d'acceptance

  1. Une confirmation explicite est demandée avant suppression.
  2. La table correspondante est supprimée du schéma PostgreSQL de l'entreprise.
  3. La source disparaît de la liste.

3. Périmètre fonctionnel

Frontend

  • Liste des sources (action de suppression) : front/src/pages/admin/sources/AdminSourcesPage.vue
  • Composant modal de confirmation : front/src/components/ui/PopUpCard.vue
  • Store Pinia : front/src/stores/source-store.js
  • Tests page liste : front/src/__tests__/pages/admin/sources/AdminSourcesPage.spec.js
  • Tests store : front/src/__tests__/stores/source-store.spec.js

Backend

  • Controller : back/src/api/sources/sources.controller.ts
  • Service principal : back/src/api/sources/sources.service.ts
  • DTO : back/src/api/sources/dto/source.dto.ts
  • Tests unitaires service : back/src/api/sources/sources.service.spec.ts
  • Tests E2E controller : back/test/e2e/sources-controller.e2e-spec.ts

Endpoints

MéthodeRouteRôle
DELETE/sources/:uuidSupprime la table PostgreSQL associée et hard delete la source, avec réponse métier

4. Points de vérification

  • Depuis AdminSourcesPage, chaque source propose une action Supprimer via ActionMenuButton.
  • Le clic sur Supprimer ouvre une modal de confirmation explicite (PopUpCard) avec mention du caractère irréversible.
  • Le backend protège DELETE /sources/:uuid avec AuthGuard + AdminGuard.
  • La réponse en succès est 200 avec payload { message: 'Source supprimée avec succès.' }.
  • Le comportement est idempotent côté table : si la table n'existe déjà plus, la suppression de la source reste un succès.
  • La suppression de la source est un hard delete de l'entrée sources.
  • Après confirmation, la source disparaît de la liste et la pagination est recalculée côté front.

5. Tests associés

Tests unitaires back

  • back/src/api/sources/sources.service.spec.ts
    • deleteSource : suppression table + source et retour du message succès.
    • deleteSource : succès idempotent si table déjà absente.
    • deleteSource : erreur 404 (SourceNotFoundException) si source introuvable.
    • deleteSource : propagation d'erreur SQL inattendue.

Tests E2E back (Supertest)

  • back/test/e2e/sources-controller.e2e-spec.ts
    • DELETE /sources/:uuid : 401 sans token.
    • DELETE /sources/:uuid : 403 pour rôle non admin.
    • DELETE /sources/:uuid : 400 UUID invalide.
    • DELETE /sources/:uuid : 404 source introuvable.

Tests unitaires front

  • front/src/__tests__/pages/admin/sources/AdminSourcesPage.spec.js
    • ouverture de la modal de suppression depuis le menu action,
    • confirmation de suppression : appel store + rechargement de la liste + notification succès.
  • front/src/__tests__/stores/source-store.spec.js
    • deleteSource : appel DELETE /sources/:uuid,
    • deleteSource : remise à zéro de deletingSourceUuid même en cas d'erreur.