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

¡Felicidades por construir un sistema completo de gestión de bibliotecas! Ahora es el momento de reunir todos tus componentes y verificar que todo funcione sin problemas. Crearás una prueba de integración integral que ejercite el flujo de trabajo completo 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 arreglo privado $borrowedBooks, una constante MAX_BOOKS con valor 3 y todos los métodos del usuario.
  • Library.php: Incluye el archivo User. Tu clase Library con gestión de libros, funcionalidad de préstamo y devolución, métodos de búsqueda y el método removeBook().
  • Admin.php: Incluye el archivo Library. Tu clase Admin, que extiende User, con los métodos addBookToLibrary() y removeBookFromLibrary().
  • main.php: Incluye el archivo Admin. Aquí ejecutarás tu prueba de integración. Recibirás dos entradas: el nombre de un usuario y una palabra clave del autor que se buscará.

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

    Después, ejecuta esta secuencia de prueba de integración e imprime cada resultado en una línea nueva:

    1. Haz que el usuario tome prestado "978-0"
    2. Haz que el usuario tome prestado "978-1"
    3. Busca por autor usando la segunda entrada e imprime el recuento: "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 nuevamente los libros disponibles e imprime: "Available after return: [count]"
    7. Haz que el administrador elimine "978-0"
    8. Haz que el administrador intente eliminar "978-0" nuevamente

Este desafío final valida que todo tu sistema funcione en conjunto: los administradores gestionan el inventario, los usuarios toman libros prestados dentro de los límites, las búsquedas devuelven resultados precisos y la disponibilidad se actualiza correctamente durante todo el 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 Library

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

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

// TODO: Hacer que el admin agregue 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"

// 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. Search by author using $searchAuthor and print: "Books by author: [count]"
// 4. Obtener los libros disponibles e imprimir: "Available: [count]"
// 5. Hacer que el usuario devuelva "978-0"
// 6. Get available books again and print: "Available after return: [count]"
// 7. Haz que el admin elimine "978-0"
// 8. Haz que el admin intente eliminar "978-0" de nuevo

?>

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de PHP online