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 créé un système complet de gestion de bibliothèque ! Il est maintenant temps de réunir tous vos composants et de vérifier que tout fonctionne parfaitement. Vous allez créer un test d’intégration complet qui parcourt l’ensemble du flux de travail de votre bibliothèque.

Vous allez organiser votre code sur cinq fichiers :

  • Book.php : votre classe Book avec des propriétés readonly (isbn, title, author), une propriété $isAvailable privée et les méthodes : isAvailable(), markAsBorrowed() et markAsReturned().
  • User.php : incluez le fichier Book. Votre classe User avec des propriétés readonly (id, name), un tableau $borrowedBooks privé, 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 et de retour, les méthodes de recherche et la méthode removeBook().
  • Admin.php : incluez le fichier Library. Votre classe Admin qui étend 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 : le nom d’un utilisateur et un mot-clé correspondant à un auteur à rechercher.

    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

    Demandez à l’administrateur d’ajouter 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"

    Exécutez ensuite cette séquence de test d’intégration en affichant chaque résultat sur une nouvelle ligne :

    1. Demandez à l’utilisateur d’emprunter "978-0"
    2. Demandez à l’utilisateur d’emprunter "978-1"
    3. Effectuez une recherche par auteur à l’aide de 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. Demandez à l’utilisateur de retourner "978-0"
    6. Récupérez à nouveau les livres disponibles et affichez : "Available after return: [count]"
    7. Demandez à l’administrateur de supprimer "978-0"
    8. Demandez à l’administrateur d’essayer à nouveau de supprimer "978-0"

Ce défi final vérifie que l’ensemble de votre système fonctionne de manière cohérente : les administrateurs gèrent l’inventaire, les utilisateurs empruntent dans les limites autorisées, les recherches renvoient des résultats exacts et la disponibilité est correctement mise à jour tout au long du flux de travail.

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 Library

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

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

// TODO: Faire ajouter trois livres par l'admin :
// - ISBN: "978-0", Title: "PHP Fundamentals", Author: "Sarah Johnson"
// - ISBN: "978-1", Title: "OOP Patterns", Author: "Mike Chen"
// - ISBN: "978-2", Title: "Web Security", Author: "Sarah Johnson"

// TODO: Séquence de test d'intégration :
// 1. Faire emprunter "978-0" par l'utilisateur
// 2. Faire emprunter "978-1" par l'utilisateur
// 3. Search by author using $searchAuthor and print: "Books by author: [count]"
// 4. Obtenir les livres disponibles et afficher : "Available: [count]"
// 5. Faire retourner "978-0" par l'utilisateur
// 6. Get available books again and print: "Available after return: [count]"
// 7. Faire supprimer "978-0" par l'admin
// 8. Faire essayer à l'admin de supprimer "978-0" à nouveau

?>

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur PHP en ligne