Menu
Coddy logo textTech

Pruebas e integración

Parte de la sección Programación Orientada a Objetos del Journey de PHP de Coddy — lección 87 de 91.

challenge icon

Desafío

Fácil

¡Felicitaciones por construir un Sistema de Gestión de Biblioteca completo! Ahora es el momento de unir todos tus componentes y verificar que todo funcione a la perfección. Crearás una prueba de integración exhaustiva que ponga a prueba todo el flujo de trabajo de tu biblioteca.

Organizarás tu código en cinco archivos:

  • Book.php — Tu clase Book con propiedades de solo lectura (isbn, title, author), una propiedad privada $isAvailable, y los métodos: isAvailable(), markAsBorrowed(), y markAsReturned().
  • User.php — Incluye el archivo Book. Tu clase User con propiedades de solo lectura (id, name), un array privado $borrowedBooks, una constante MAX_BOOKS de 3, y todos los métodos de usuario.
  • Library.php — Incluye el archivo User. Tu clase Library con gestión de libros, funcionalidad de préstamo/devolución, métodos de búsqueda y el método removeBook().
  • Admin.php — Incluye el archivo Library. Tu clase Admin que extiende de User con los métodos addBookToLibrary() y removeBookFromLibrary().
  • main.php — Incluye el archivo Admin. Aquí es donde ejecutarás tu prueba de integración. Recibirás dos entradas: un nombre de usuario y una palabra clave para buscar por autor.

    Configura tu sistema de biblioteca:

    • Crea una Library
    • Crea un Admin con ID 1 y nombre "LibraryAdmin"
    • Crea un User con ID 2 y el nombre de usuario proporcionado

    Haz que el administrador agregue estos tres libros:

    • 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"

    Luego, ejecuta esta secuencia de prueba de integración, imprimiendo cada resultado en una línea nueva:

    1. Haz que el usuario pida prestado "978-0"
    2. Haz que el usuario pida prestado "978-1"
    3. Busca por autor usando la segunda entrada e imprime el conteo: "Books by author: [count]"
    4. Obtén los libros disponibles e imprime: "Available: [count]"
    5. Haz que el usuario devuelva "978-0"
    6. Obtén los libros disponibles de nuevo e imprime: "Available after return: [count]"
    7. Haz que el administrador elimine "978-0"
    8. Haz que el administrador intente eliminar "978-0" de nuevo

Este desafío final valida que todo tu sistema funciona en conjunto: los administradores gestionando el inventario, los usuarios pidiendo prestado dentro de los límites, las búsquedas devolviendo resultados precisos y la disponibilidad actualizándose correctamente a lo largo del flujo de trabajo.

Pruébalo tú mismo

<?php

require_once 'Admin.php';

// Leer entradas
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));

// TODO: Crear una Biblioteca (Library)

// TODO: Crear un Administrador (Admin) con ID 1 y nombre "LibraryAdmin"

// TODO: Crear un Usuario (User) con ID 2 y el nombre de usuario proporcionado

// TODO: Hacer que el administrador agregue tres libros:
// - ISBN: "978-0", Título: "PHP Fundamentals", Autor: "Sarah Johnson"
// - ISBN: "978-1", Título: "OOP Patterns", Autor: "Mike Chen"
// - ISBN: "978-2", Título: "Web Security", Autor: "Sarah Johnson"

// TODO: Secuencia de prueba de integración:
// 1. Hacer que el usuario tome prestado "978-0"
// 2. Hacer que el usuario tome prestado "978-1"
// 3. Buscar por autor usando $searchAuthor e imprimir: "Books by author: [count]"
// 4. Obtener libros disponibles e imprimir: "Available: [count]"
// 5. Hacer que el usuario devuelva "978-0"
// 6. Obtener libros disponibles de nuevo e imprimir: "Available after return: [count]"
// 7. Hacer que el administrador elimine "978-0"
// 8. Hacer que el administrador intente eliminar "978-0" de nuevo

?>

Todas las lecciones de Programación Orientada a Objetos