Appearance
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
- Une confirmation explicite est demandée avant suppression.
- La table correspondante est supprimée du schéma PostgreSQL de l'entreprise.
- 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éthode | Route | Rôle |
|---|---|---|
DELETE | /sources/:uuid | Supprime 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 actionSupprimerviaActionMenuButton. - Le clic sur
Supprimerouvre une modal de confirmation explicite (PopUpCard) avec mention du caractère irréversible. - Le backend protège
DELETE /sources/:uuidavecAuthGuard+AdminGuard. - La réponse en succès est
200avec 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.tsdeleteSource: 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.tsDELETE /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.jsdeleteSource: appelDELETE /sources/:uuid,deleteSource: remise à zéro dedeletingSourceUuidmême en cas d'erreur.
