Appearance
BDD-58 — Consultation source Heriade
1. User Story
En tant qu'administrateur,
Je veux consulter les données d'une source Heriade,
Afin de vérifier le contenu chargé et naviguer dans les données.
2. Critères d'acceptance
- Les données sont affichées dans un tableau paginé (20 lignes par page par défaut).
- Les colonnes sont affichées avec leur nom et leur type.
- L'utilisateur peut trier par colonne (ascendant / descendant).
- Le nombre total de lignes est affiché.
- La date de dernier chargement est affichée (priorité
updatedAt, sinoncreatedAt). - Depuis la liste des sources, l'accès à la consultation se fait via un menu d'actions.
3. Périmètre fonctionnel
Frontend
- Liste des sources (action de consultation) :
front/src/pages/admin/sources/AdminSourcesPage.vue - Page de consultation :
front/src/pages/admin/sources/AdminSourceDetailPage.vue - Routage :
front/src/router/routes.js - Store Pinia :
front/src/stores/source-store.js - Tests page liste :
front/src/__tests__/pages/admin/sources/AdminSourcesPage.spec.js - Tests page détail :
front/src/__tests__/pages/admin/sources/AdminSourceDetailPage.spec.js - Tests routing :
front/src/__tests__/router/routes.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 - Presenter :
back/src/api/sources/source.presenter.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 |
|---|---|---|
GET | /sources/:uuid/data | Retourne les données d'une source avec pagination, tri, colonnes typées, total et date de dernier chargement |
GET | /sources | Alimente la liste des sources et le menu d'accès à la consultation |
4. Points de vérification
- Depuis
AdminSourcesPage, chaque source propose une actionConsulterviaActionMenuButton. - Le clic sur
Consulterredirige vers/sources/:uuid. - Le backend protège
GET /sources/:uuid/dataavecAuthGuard+AdminGuard. - La réponse
GET /sources/:uuid/datacontient :columns(avecname,type),rows,total,page,limit,lastLoadedAt.
- Le tri accepte
sortByetsortOrder(asc,desc) et refuse les colonnes invalides. - La pagination front s'appuie sur
page,limit,totalrenvoyés par l'API. - L'affichage "Dernier chargement" utilise
updatedAtsi présent, sinoncreatedAt. - Dans la vue détail, le tableau affiche :
- en-têtes lisibles,
- type de colonne affiché (mapping métier front),
- déclenchement du tri par colonne.
5. Tests associés
Tests unitaires back
back/src/api/sources/sources.service.spec.tsgetSourceData: récupération des colonnes + lignes paginées,getSourceData: erreur 400 sisortByinvalide,getSourceData: fallbackcreated_atsiupdated_atest null.
Tests E2E back (Supertest)
back/test/e2e/sources-controller.e2e-spec.tsGET /sources/:uuid/data: 401 sans token,GET /sources/:uuid/data: 403 pour rôle non admin,GET /sources/:uuid/data: 400 UUID invalide,GET /sources/:uuid/data: 404 source introuvable.
Tests unitaires front
front/src/__tests__/pages/admin/sources/AdminSourcesPage.spec.js- chargement initial de la liste,
- affichage "Dernier chargement" (
updatedAtpuiscreatedAt), - navigation via action menu
Consulter, - pagination liste.
front/src/__tests__/pages/admin/sources/AdminSourceDetailPage.spec.js- chargement initial des données,
- état vide et état loading,
- affichage colonnes/lignes,
- mapping des types affichés,
- tri asc/desc,
- pagination,
- navigation retour vers
/sources.
front/src/__tests__/stores/source-store.spec.jsfetchSourceData: envoi des paramètres page/limit/sortBy/sortOrder,fetchSourceData: hydratation du state de consultation,resetSourceDataState: remise à zéro de l'état.
front/src/__tests__/router/routes.spec.js- présence de la route
sources/:uuidavecsourcesGuard.
- présence de la route
