forked from pierront/mylibrary-template
feature suite
This commit is contained in:
91
src/test/resources/features/book.feature
Normal file
91
src/test/resources/features/book.feature
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# language: en
|
||||||
|
Feature: Gestion des livres
|
||||||
|
|
||||||
|
Backgroud:
|
||||||
|
Given Le systéme possède comme livre :
|
||||||
|
| isbn | title | author | publisher | publicationDate | price | quantity | categories | description | language |
|
||||||
|
| 999 | Bob | Boby | Nathan | 2025-06-12 | 1.5 | 0 | FICTION, THRILLER | blabla | fr |
|
||||||
|
| 9783161484100 | Le Petit Prince | Antoine de Saint-Exupery | Gallimard | 1943-04-06 | 12.5 | 100 | FICTION, CHILDRENS | un conte poetique et philosophique | fr |
|
||||||
|
|
||||||
|
Scenario: Récupérer tous les livres avec pagination
|
||||||
|
When j’envoie une requête GET vers "/api/books?page=0&size=10"
|
||||||
|
Then le code de réponse doit être 200
|
||||||
|
And la réponse doit contenir le champ "content"
|
||||||
|
|
||||||
|
Scenario: Récupérer un livre par son identifiant
|
||||||
|
Given que le livre avec l’ID 9783161484100 existe
|
||||||
|
When j’envoie une requête GET vers "/api/books/9783161484100"
|
||||||
|
Then le code de réponse doit être 200
|
||||||
|
And la réponse doit contenir :
|
||||||
|
| isbn | 9783161484100 |
|
||||||
|
| title | Le Petit Prince |
|
||||||
|
| author | Antoine de Saint-Exupery |
|
||||||
|
| publisher | Gallimard |
|
||||||
|
| publicationDate | 1943-04-06 |
|
||||||
|
| price | 12.5 |
|
||||||
|
| quantity | 100 |
|
||||||
|
| categories | FICTION,CHILDRENS |
|
||||||
|
| description | Un conte poetique et philosophique |
|
||||||
|
| language | fr |
|
||||||
|
|
||||||
|
Scenario: Ajouter un nouveau livre
|
||||||
|
When j’envoie une requête POST vers "/api/books" :
|
||||||
|
| isbn | 66666666666666 |
|
||||||
|
| title | Le Grand Roi |
|
||||||
|
| author | Saint de Exupery |
|
||||||
|
| publisher | Mard |
|
||||||
|
| publicationDate | 1993-06-06 |
|
||||||
|
| price | 10.5 |
|
||||||
|
| quantity | 15 |
|
||||||
|
| categories | FICTION |
|
||||||
|
| description | Un conte |
|
||||||
|
| language | fr |
|
||||||
|
Then le code de réponse doit être 201
|
||||||
|
And le systéme doit avoir 3 livres
|
||||||
|
|
||||||
|
Scenario: Ajouter un nouveau livre mais cela cause l'erreur 400 à cause d'une mauvaise entrée
|
||||||
|
When j’envoie une requête POST vers "/api/books" mais je met des informations incorrect:
|
||||||
|
| isbn | 0000000000000 |
|
||||||
|
| title | Le Petit Prince |
|
||||||
|
| author | Antoine de Saint-Exupery |
|
||||||
|
| publisher | Gallimard |
|
||||||
|
| publicationDate | 19430406 |
|
||||||
|
| price | -12.5 |
|
||||||
|
| quantity | 100 |
|
||||||
|
| categories | TeSt |
|
||||||
|
| description | Un conte poetique et philosophique |
|
||||||
|
| language | fr |
|
||||||
|
Then le code de réponse doit être 400
|
||||||
|
And la réponse doit contenir le message :
|
||||||
|
| typeException | BadRequestException |
|
||||||
|
|
||||||
|
Scenario: Ajouter un livre déjà existant
|
||||||
|
Given qu’un livre avec l’ISBN 9783161484100 existe déjà dans le système
|
||||||
|
When j’envoie une requête POST vers "/api/books" d'un livre qui existe déjà:
|
||||||
|
| isbn | 9783161484100 |
|
||||||
|
| title | Le Petit Prince |
|
||||||
|
| author | Antoine de Saint-Exupery |
|
||||||
|
| publisher | Gallimard |
|
||||||
|
| publicationDate | 1943-04-06 |
|
||||||
|
| price | 12.5 |
|
||||||
|
| quantity | 100 |
|
||||||
|
| categories | FICTION |
|
||||||
|
| description | Un conte poetique |
|
||||||
|
| language | fr |
|
||||||
|
Then le code de réponse doit être 406
|
||||||
|
And la réponse doit contenir :
|
||||||
|
| typeException | ConflictException |
|
||||||
|
|
||||||
|
Scenario: Récupérer un livre existant par son ID
|
||||||
|
Given qu’un livre avec l’ISBN 9783161484100 existe dans le système
|
||||||
|
When j’envoie une requête GET vers "/api/books/9783161484100"
|
||||||
|
Then le code de réponse doit être 200
|
||||||
|
And la réponse doit contenir :
|
||||||
|
| isbn | 9783161484100 |
|
||||||
|
| title | Le Petit Prince |
|
||||||
|
| author | Antoine de Saint-Exupery |
|
||||||
|
| publisher | Gallimard |
|
||||||
|
| publicationDate | 1943-04-06 |
|
||||||
|
| price | 12.5 |
|
||||||
|
| quantity | 100 |
|
||||||
|
| language | fr |
|
53
src/test/resources/features/order.feature
Normal file
53
src/test/resources/features/order.feature
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# language: en
|
||||||
|
Feature: Gestion des commandes
|
||||||
|
|
||||||
|
Backgroud:
|
||||||
|
Given Le systéme possède comme commande :
|
||||||
|
Background:
|
||||||
|
Given Le système possède comme commande:
|
||||||
|
|
||||||
|
|
||||||
|
Scenario: Créer une commande avec succès
|
||||||
|
Given un client avec l'identifiant "12345678-9101-1121-3141-516171819201" passe commande
|
||||||
|
And un livre avec l'identifiant 100 est en stock
|
||||||
|
And les détails de la commande sont :
|
||||||
|
|
||||||
|
When j'envoie une requête POST vers "/api/orders" avec ces informations
|
||||||
|
Then le code de réponse doit être 201
|
||||||
|
And la réponse JSON doit contenir :
|
||||||
|
| customerId | 12345678-9101-1121-3141-516171819201 |
|
||||||
|
| paymentMethod | CREDIT_CARD |
|
||||||
|
|
||||||
|
Scenario: Échec de la création d'une commande avec des données invalides
|
||||||
|
Given les détails de la commande sont :
|
||||||
|
| bookId | 9783161484100 |
|
||||||
|
| quantity | -10 |
|
||||||
|
| customerId | 12345678-9101-1121-3141-516171819201 |
|
||||||
|
| paymentMethod | rue des Tests |
|
||||||
|
| street | rue des Tests |
|
||||||
|
| city | Testville |
|
||||||
|
| postalCode | 12345 |
|
||||||
|
| country | France |
|
||||||
|
|
||||||
|
When l'utilisateur envoie une requête POST vers "/api/orders"
|
||||||
|
Then le code de réponse doit être 400
|
||||||
|
And la réponse doit contenir le message :
|
||||||
|
| typeException | InvalidOrderException |
|
||||||
|
| errorMessage | Les détails de la commande sont invalides. |
|
||||||
|
|
||||||
|
|
||||||
|
Scenario: Échec de création de commande à cause d'un livre ou client introuvable
|
||||||
|
Given un identifiant client "client-inexistant"
|
||||||
|
And un identifiant livre "999999" qui n'existe pas
|
||||||
|
When j'envoie une requête POST vers "/api/orders" avec ces informations
|
||||||
|
Then le code de réponse doit être 404
|
||||||
|
And la réponse JSON doit contenir :
|
||||||
|
| errorMessage | Book or customer not found |
|
||||||
|
|
||||||
|
Scenario: Échec de commande à cause de points de fidélité ou de stock insuffisants
|
||||||
|
Given un client qui n'a pas assez de points de fidélité
|
||||||
|
And le livre commandé n'est pas disponible en quantité suffisante
|
||||||
|
When j'envoie une requête POST vers "/api/orders"
|
||||||
|
Then le code de réponse doit être 409
|
||||||
|
And la réponse JSON doit contenir :
|
||||||
|
| errorMessage | Not enough loyalty points or book quantity insufficient |
|
64
src/test/resources/features/subscription.feature
Normal file
64
src/test/resources/features/subscription.feature
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
# language: en
|
||||||
|
Feature: Gestion des inscriptions de l'abonnement
|
||||||
|
Background:
|
||||||
|
Given Le systéme possède comme commande:
|
||||||
|
| durationInMonths | paymentMethod | requestedStartDate | customerId |
|
||||||
|
| 12 | CREDIT_CARD | 2025-01-01 | 00000000-0000-0000-0000-000000000000 |
|
||||||
|
|
||||||
|
Scenario: Créer un abonnement avec succès
|
||||||
|
Given un client avec l’ID "12345678-9101-1121-3141-516171819201" s'inscrit à l'abonement
|
||||||
|
When j’envoie une requête POST vers "/api/subscriptions":
|
||||||
|
| durationInMonths | 6 |
|
||||||
|
| paymentMethod | CREDIT_CARD |
|
||||||
|
| requestedStartDate | 2025-01-01 |
|
||||||
|
| customerId | 12345678-9101-1121-3141-516171819201 |
|
||||||
|
|
||||||
|
Then le code de réponse doit être 201
|
||||||
|
And la réponse doit contenir le champ "subscriptionId"
|
||||||
|
|
||||||
|
Scenario: Échec de création à cause de données invalides
|
||||||
|
When j’envoie une requête POST vers "/api/subscriptions":
|
||||||
|
| customerId | gdftrg |
|
||||||
|
| durationInMonths | 0 |
|
||||||
|
| paymentMethod | AUTRE |
|
||||||
|
Then le code de réponse doit être 400
|
||||||
|
And la réponse doit contenir :
|
||||||
|
| errorMessage | Invalid subscription details or payment method |
|
||||||
|
|
||||||
|
Scenario: Échec de création car le client est introuvable
|
||||||
|
When j’envoie une requête POST vers "/api/subscriptions":
|
||||||
|
| durationInMonths | 6 |
|
||||||
|
| paymentMethod | CREDIT_CARD |
|
||||||
|
| requestedStartDate | 2025-07-01 |
|
||||||
|
| customerId | 00000000-0000-0000-0000-000000000022 |
|
||||||
|
Then le code de réponse doit être 404
|
||||||
|
And la réponse doit contenir :
|
||||||
|
| errorMessage | Customer not found |
|
||||||
|
|
||||||
|
Scenario: Échec de création customer "65464646" à cause de points de fidélité insuffisants
|
||||||
|
Given qu’un client avec l’ID "12345678-9101-1121-3141-516171819201" mais il n'a pas assez de points
|
||||||
|
When j’envoie une requête POST vers "/api/subscriptions":
|
||||||
|
| durationInMonths | 12 |
|
||||||
|
| paymentMethod | LOYALTY_POINTS |
|
||||||
|
| requestedStartDate | 2025-07-01 |
|
||||||
|
| customerId | 123e4567-e89b-12d3-a456-426614174000 |
|
||||||
|
Then le code de réponse doit être 409
|
||||||
|
And la réponse doit contenir :
|
||||||
|
| errorMessage | Not enough loyalty points |
|
||||||
|
|
||||||
|
Scenario: Récupérer l’abonnement d’un client existant
|
||||||
|
Given Un client avec l’ID "00000000-0000-0000-0000-000000000000" possède un abonnement actif
|
||||||
|
When j’envoie une requête GET vers "/api/subscriptions/customer/123e4567-e89b-12d3-a456-426614174000"
|
||||||
|
Then le code de réponse doit être 200
|
||||||
|
And la réponse doit contenir :
|
||||||
|
| customerId | 00000000-0000-0000-0000-000000000000 |
|
||||||
|
| durationInMonths | 6 |
|
||||||
|
| startDate | 2025-01-01 |
|
||||||
|
| endDate | 2025-01-02 |
|
||||||
|
|
||||||
|
Scenario: Récupérer l’abonnement d’un client sans abonnement
|
||||||
|
Given qu’un client avec l’ID "12345678-9101-1121-3141-516171819201" n’a pas d’abonnement
|
||||||
|
When j’envoie une requête GET vers "/api/subscriptions/customer/12345678-9101-1121-3141-516171819201"
|
||||||
|
Then le code de réponse doit être 404
|
||||||
|
And la réponse doit contenir 65489 :
|
||||||
|
| errorMessage | Subscription not found for the customer |
|
Reference in New Issue
Block a user