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

Practica por tu cuenta: Compilador de PHP online