CAFÉ AURORA — WEB II — CHECKPOINT DO CAPÍTULO 11

Este checkpoint serve para conferência ou retomada depois da construção prática.
Ele inclui os capítulos anteriores e migra os quatro testes de integração para Composer e PHPUnit.

PREPARAÇÃO DO AMBIENTE
1. Abra a pasta cafe-aurora-web2 no VS Code.
2. Confira as versões e extensões:
   php -v
   composer --version
   php -m | findstr /I "PDO sqlite mbstring xml"
3. Este projeto requer PHP 8.5 e PHPUnit 13.
4. Se o Composer ainda não estiver instalado, siga a página oficial:
   https://getcomposer.org/download/

INSTALAÇÃO DAS DEPENDÊNCIAS
1. Na raiz do projeto, valide a configuração:
   composer validate
2. Instale as dependências:
   composer install
3. Na primeira instalação, o Composer cria composer.lock e vendor/.
4. Mantenha composer.lock no controle de versão para repetir as versões resolvidas.
5. Não versione vendor/: essa pasta pode ser reconstruída com composer install.

COMO EXECUTAR A APLICAÇÃO
1. Confira a sintaxe dos arquivos modificados:
   php -l src/repositorio-mensagens.php
   php -l public/admin/excluir-mensagem.php
   php -l tests/ExclusaoMensagemTest.php
2. Execute novamente o inicializador, mesmo que o banco já exista:
   php src/inicializar-banco.php
3. Se ainda não houver credencial, crie uma:
   php src/criar-administrador.php
4. Inicie o servidor:
   php -S localhost:8000 -t public
5. Envie mensagens em http://localhost:8000/contato.php.
6. Entre em http://localhost:8000/admin/entrar.php e confirme que atualização e exclusão continuam funcionando.

COMO EXECUTAR OS TESTES
1. Pare o servidor com Ctrl+C ou abra outro terminal na raiz do projeto.
2. Execute toda a suíte:
   composer test
3. Confira o resumo esperado:
   OK (4 tests, 8 assertions)
4. Para investigar somente um caso no Windows:
   vendor\bin\phpunit --filter testNaoExcluiUmaMensagemNova
5. No Linux ou macOS, use:
   vendor/bin/phpunit --filter testNaoExcluiUmaMensagemNova
6. Depois da investigação, execute novamente toda a suíte.

O QUE FOI ACRESCENTADO OU MIGRADO
- composer.json com requisitos do ambiente e dependência de desenvolvimento;
- autoload do arquivo src/repositorio-mensagens.php;
- script composer test com relatório TestDox;
- phpunit.xml com bootstrap, cache e descoberta da pasta tests;
- classe ExclusaoMensagemTest herdando PHPUnit\Framework\TestCase;
- quatro métodos descobertos automaticamente pelo prefixo test;
- asserções assertTrue(), assertFalse() e assertSame();
- pasta vendor/ e cache do PHPUnit ignorados pelo Git;
- mesmo banco SQLite em memória, novo para cada caso;
- mesmas funcionalidades da aplicação e dos capítulos anteriores.

CASOS AUTOMATIZADOS
- exclui uma mensagem respondida;
- não exclui uma mensagem nova;
- não exclui uma mensagem em atendimento;
- exclui somente o ID informado e preserva outra mensagem respondida.

CONFIRA
- aplicação e teste usam excluirMensagemRespondida() pelo autoload;
- o SQL de produção não foi copiado para dentro do teste;
- cada método recebe um banco em memória independente;
- o arquivo cafe-aurora.sqlite não é criado nem alterado pelos testes;
- retirar temporariamente a condição do estado faz casos proibidos falharem;
- restaurar a condição faz a suíte voltar a passar;
- o filtro ajuda a investigar um caso, mas a conferência final executa todos;
- composer.lock é mantido e vendor/ permanece fora do repositório.

IMPORTANTE
- usar PHPUnit não transforma estes casos em testes unitários;
- eles continuam sendo testes de integração entre PHP, PDO, SQLite e SQL;
- quatro casos não garantem que o sistema inteiro está correto;
- autenticação, CSRF, HTTP, acessibilidade e interface ainda exigem outros níveis de teste;
- composer update altera a resolução das dependências e deve ser uma decisão consciente;
- o Capítulo 12 encerrará o módulo com critérios de entrega e operação.
