Appearance
BDD-36 — Pagination de la liste des fichiers espace client
1. User Story
En tant que client externe Je veux paginer la liste de mes fichiers déposés Afin de consulter mon historique sans surcharger la page /upload
2. Criteres d'acceptance
- La liste
Mes fichiers déposésest paginée côté front à partir des métadonnées renvoyées parGET /documents - La pagination n'est pas affichée si le total est inférieur ou égal à la limite par page
- La pagination est affichée si le total dépasse la limite
- Le changement de page déclenche un nouvel appel
GET /documentsavec le bon paramètrepage - La limite par défaut côté front est
6fichiers par page
3. Perimetre fonctionnel
- Page front:
front/src/pages/upload/UploadPage.vue - Store front:
front/src/stores/files-store.js - Liste des documents:
front/src/components/documents/DocumentListItem.vue - Endpoint back consommé:
GET /documents
4. Points de verification
- Le bloc
Mes fichiers déposésaffichex fichier(s)à partir dedocumentsTotal q-paginationapparait uniquement sidocumentsTotalPages > 1- Le calcul du nombre de pages suit
ceil(total / limit) - Le clic sur une page appelle
fileStore.fetchDocuments({ page: p }) - La page suivante remplace bien les documents affichés par ceux de la page demandée
5. Tests associes
Tests unitaires front:
front/src/__tests__/pages/upload/UploadPage.spec.js- masque la pagination si
total <= limit - affiche la pagination si
total > limit - calcule le nombre de pages
- appelle
fetchDocuments({ page: 2 })au clic
- masque la pagination si
front/src/__tests__/stores/files-store.spec.js- charge
GET /documentsavecpage=1etlimit=6 - accepte des paramètres
page/limitpersonnalisés - réutilise la page courante du store si
pagen'est pas fournie
- charge
Tests e2e front (Playwright mock):
front/e2e/upload-mock.spec.js- affiche la pagination à partir de 7 fichiers
- charge la page suivante et remplace la liste visible
6. Notes d'implementation
- La pagination front repose uniquement sur la réponse paginée de
GET /documents - La valeur par défaut côté store est
limit = 6 - En cas d'upload réussi, la liste est rechargée en
page: 1
