79 lines
3.0 KiB
Markdown
79 lines
3.0 KiB
Markdown
# mylibrary — back-end Java (méthode BDD)
|
|
|
|
Back-end du projet **2026-DEV-BUT3**. Reproduit, en Java pur, le cœur métier
|
|
de l'API consommée par le front React `my-library/`.
|
|
|
|
## Méthode
|
|
|
|
Conformément au cours `maintenanceApplicativeCours1.pdf` (Behavior-Driven
|
|
Development), pour chaque comportement on :
|
|
|
|
1. Écrit le scénario attendu (en Gherkin / `.feature` ou en `@DisplayName` JUnit)
|
|
2. Écrit le test qui le vérifie
|
|
3. Implémente le code qui fait passer le test
|
|
|
|
## Structure (calquée sur le module `customer` fourni par le prof)
|
|
|
|
```
|
|
src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/
|
|
├─ customer/ Module fourni par l'enseignant (intact)
|
|
│ ├─ CustomerInfo.java record d'entrée
|
|
│ ├─ CustomerDTO.java DTO de sortie
|
|
│ ├─ entity/ Customer (objet métier, règles fidélité)
|
|
│ ├─ exception/ Exceptions métier
|
|
│ ├─ converter/ Mapping Info <-> entity <-> DTO
|
|
│ ├─ validator/ Règles de validation
|
|
│ ├─ repository/ Stockage en mémoire (List)
|
|
│ └─ usecase/ Cas d'usage (orchestration)
|
|
└─ book/ Module développé en miroir (notre travail)
|
|
└─ … (mêmes sous-paquets, même découpage)
|
|
|
|
src/test/java/.../mylibrary/
|
|
├─ customer/ Tests JUnit fournis par l'enseignant
|
|
├─ book/ Tests JUnit que nous avons écrits
|
|
└─ features/
|
|
├─ RunCucumberTest.java (du prof, intact)
|
|
├─ client/CustomerSteps.java (du prof, intact)
|
|
├─ book/BookSteps.java (notre travail)
|
|
└─ resources/features/
|
|
├─ client.feature (du prof, intact)
|
|
└─ book.feature (notre travail)
|
|
```
|
|
|
|
## Dépendances
|
|
|
|
Strictement les mêmes que dans le template du prof :
|
|
|
|
- JUnit 5 (jupiter-api, params, engine + platform-suite, platform-engine, platform-launcher)
|
|
- Mockito (core, junit-jupiter)
|
|
- Cucumber (cucumber-java, cucumber-junit-platform-engine)
|
|
- Lombok
|
|
|
|
## Build & test
|
|
|
|
Pré-requis : **JDK 21** + **Maven 3.9+**
|
|
|
|
```bash
|
|
mvn -f mylibrary test
|
|
```
|
|
|
|
Cette commande exécute :
|
|
|
|
- les tests unitaires JUnit (entity, validator, converter, repository, usecase, exceptions)
|
|
- les scénarios Cucumber (`client.feature` + `book.feature`) via `RunCucumberTest`
|
|
|
|
## Périmètre couvert
|
|
|
|
Conformément à la consigne (« reproduire le strict nécessaire pour démontrer
|
|
la maîtrise »), l'API se limite aux deux domaines présents dans le swagger
|
|
qui structurent l'app React :
|
|
|
|
- **Catalogue** (`book`) : enregistrer, consulter par ISBN, lister tous les livres,
|
|
refuser ISBN dupliqué, refuser un livre invalide, gérer le stock.
|
|
- **Comptes clients** (`customer`) : enregistrer, consulter par téléphone, mettre
|
|
à jour, supprimer, ajouter / retirer des points de fidélité (module fourni).
|
|
|
|
L'exposition HTTP réelle utilisée par les développeurs front est l'API du prof
|
|
(`mylibrary-0.0.1-SNAPSHOT.jar`) ; ce module sert à démontrer la maîtrise
|
|
de la **conception métier en BDD/TDD**.
|