Menu
Coddy logo textTech

Tests et intégration

Fait partie de la section Programmation Orientée Objet du Journey PHP de Coddy — leçon 87 sur 91.

challenge icon

Défi

Facile

Félicitations pour avoir construit un système complet de gestion de bibliothèque ! Il est maintenant temps de rassembler tous vos composants et de vérifier que tout fonctionne parfaitement. Vous allez créer un test d'intégration complet qui exercera l'ensemble du flux de travail de votre bibliothèque.

Vous organiserez votre code sur cinq fichiers :

  • Book.php — Votre classe Book avec des propriétés en lecture seule (isbn, title, author), une propriété privée $isAvailable, et les méthodes : isAvailable(), markAsBorrowed(), et markAsReturned().
  • User.php — Incluez le fichier Book. Votre classe User avec des propriétés en lecture seule (id, name), un tableau privé $borrowedBooks, une constante MAX_BOOKS de 3, et toutes les méthodes utilisateur.
  • Library.php — Incluez le fichier User. Votre classe Library avec la gestion des livres, les fonctionnalités d'emprunt/retour, les méthodes de recherche, et la méthode removeBook().
  • Admin.php — Incluez le fichier Library. Votre classe Admin étendant User avec les méthodes addBookToLibrary() et removeBookFromLibrary().
  • main.php — Incluez le fichier Admin. C'est ici que vous exécuterez votre test d'intégration. Vous recevrez deux entrées : un nom d'utilisateur et un mot-clé pour la recherche par auteur.

    Configurez votre système de bibliothèque :

    • Créez une Library
    • Créez un Admin avec l'ID 1 et le nom "LibraryAdmin"
    • Créez un User avec l'ID 2 et le nom d'utilisateur fourni

    Faites en sorte que l'administrateur ajoute ces trois livres :

    • ISBN : "978-0", Titre : "PHP Fundamentals", Auteur : "Sarah Johnson"
    • ISBN : "978-1", Titre : "OOP Patterns", Auteur : "Mike Chen"
    • ISBN : "978-2", Titre : "Web Security", Auteur : "Sarah Johnson"

    Ensuite, exécutez cette séquence de test d'intégration, en affichant chaque résultat sur une nouvelle ligne :

    1. Faites en sorte que l'utilisateur emprunte "978-0"
    2. Faites en sorte que l'utilisateur emprunte "978-1"
    3. Recherchez par auteur en utilisant la deuxième entrée et affichez le nombre : "Books by author: [count]"
    4. Récupérez les livres disponibles et affichez : "Available: [count]"
    5. Faites en sorte que l'utilisateur rende "978-0"
    6. Récupérez à nouveau les livres disponibles et affichez : "Available after return: [count]"
    7. Faites en sorte que l'administrateur supprime "978-0"
    8. Faites en sorte que l'administrateur essaie de supprimer "978-0" à nouveau

Ce défi final valide que l'ensemble de votre système fonctionne de concert — les administrateurs gérant l'inventaire, les utilisateurs empruntant dans les limites imparties, les recherches renvoyant des résultats précis, et la disponibilité se mettant à jour correctement tout au long du processus.

Essayez vous-même

<?php

require_once 'Admin.php';

// Lire les entrées
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));

// TODO: Créer une bibliothèque (Library)

// TODO: Créer un administrateur (Admin) avec l'ID 1 et le nom "LibraryAdmin"

// TODO: Créer un utilisateur (User) avec l'ID 2 et le nom d'utilisateur fourni

// TODO: Faire en sorte que l'administrateur ajoute trois livres :
// - ISBN: "978-0", Titre: "PHP Fundamentals", Auteur: "Sarah Johnson"
// - ISBN: "978-1", Titre: "OOP Patterns", Auteur: "Mike Chen"
// - ISBN: "978-2", Titre: "Web Security", Auteur: "Sarah Johnson"

// TODO: Séquence de test d'intégration :
// 1. Faire en sorte que l'utilisateur emprunte "978-0"
// 2. Faire en sorte que l'utilisateur emprunte "978-1"
// 3. Rechercher par auteur en utilisant $searchAuthor et afficher : "Books by author: [count]"
// 4. Obtenir les livres disponibles et afficher : "Available: [count]"
// 5. Faire en sorte que l'utilisateur rende "978-0"
// 6. Obtenir à nouveau les livres disponibles et afficher : "Available after return: [count]"
// 7. Faire en sorte que l'administrateur supprime "978-0"
// 8. Faire en sorte que l'administrateur essaie de supprimer "978-0" à nouveau

?>

Toutes les leçons de Programmation Orientée Objet