Menu
Coddy logo textTech

Testes e Integração

Parte da seção Programação Orientada a Objetos do Journey de PHP da Coddy. Lição 87 de 91.

challenge icon

Desafio

Fácil

Parabéns por construir um Sistema completo de Gerenciamento de Biblioteca! Agora é hora de reunir todos os seus componentes e verificar se tudo funciona perfeitamente. Você criará um teste de integração abrangente que exercita todo o fluxo de trabalho da sua biblioteca.

Você organizará seu código em cinco arquivos:

  • Book.php: sua classe Book com propriedades somente leitura (isbn, title, author), uma propriedade privada $isAvailable e os métodos: isAvailable(), markAsBorrowed() e markAsReturned().
  • User.php: inclua o arquivo Book. Sua classe User com propriedades somente leitura (id, name), um array privado $borrowedBooks, uma constante MAX_BOOKS com valor 3 e todos os métodos do usuário.
  • Library.php: inclua o arquivo User. Sua classe Library com gerenciamento de livros, funcionalidades de empréstimo/devolução, métodos de pesquisa e o método removeBook().
  • Admin.php: inclua o arquivo Library. Sua classe Admin, estendendo User, com os métodos addBookToLibrary() e removeBookFromLibrary().
  • main.php: inclua o arquivo Admin. É aqui que você executará seu teste de integração. Você receberá duas entradas: o nome de um usuário e uma palavra-chave de pesquisa de autor.

    Configure seu sistema de biblioteca:

    • Crie uma Library
    • Crie um Admin com ID 1 e nome "LibraryAdmin"
    • Crie um User com ID 2 e o nome de usuário fornecido

    Faça o administrador adicionar estes três livros:

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

    Em seguida, execute esta sequência de teste de integração, imprimindo cada resultado em uma nova linha:

    1. Faça o usuário pegar emprestado "978-0"
    2. Faça o usuário pegar emprestado "978-1"
    3. Pesquise por autor usando a segunda entrada e imprima a contagem: "Books by author: [count]"
    4. Obtenha os livros disponíveis e imprima: "Available: [count]"
    5. Faça o usuário devolver "978-0"
    6. Obtenha os livros disponíveis novamente e imprima: "Available after return: [count]"
    7. Faça o administrador remover "978-0"
    8. Faça o administrador tentar remover "978-0" novamente

Este desafio final valida que todo o seu sistema funciona em conjunto: administradores gerenciando o inventário, usuários pegando livros emprestados dentro dos limites, pesquisas retornando resultados precisos e a disponibilidade sendo atualizada corretamente durante todo o fluxo de trabalho.

Experimente você mesmo

<?php

require_once 'Admin.php';

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

// TODO: Criar uma Library

// TODO: Criar um Admin com ID 1 e nome "LibraryAdmin"

// TODO: Criar um User com ID 2 e o nome de usuário fornecido

// TODO: Faça o admin adicionar três livros:
// - 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: Sequência de teste de integração:
// 1. Faça o usuário pegar emprestado "978-0"
// 2. Faça o usuário pegar emprestado "978-1"
// 3. Search by author using $searchAuthor and print: "Books by author: [count]"
// 4. Obtenha os livros disponíveis e imprima: "Available: [count]"
// 5. Faça o usuário devolver "978-0"
// 6. Get available books again and print: "Available after return: [count]"
// 7. Faça o admin remover "978-0"
// 8. Faça o admin tentar remover "978-0" novamente

?>

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de PHP online