Como quebrei bastante a cabeça com a mesma dúvida do colega Enzo (https://cursos.alura.com.br/forum/topico-duvida-sobre-os-testes-258049), mas não consegui responder no post dele pois consta que a dúvida foi postada há mais de 4 semanas, coloco aqui a explicação que encontrei.
A questão do teste passar mesmo com o id tendo sido excluído, está no arquivo "editorasController.js", no método "listarEditoraPorId", que não está verificando se o id existe ou não (existindo ou não, retorna 200). Para fazer um teste que fizesse mais sentido para mim, alterei esse método para o que segue:
static listarEditoraPorId = async (req, res) => {
const { params } = req;
try {
const resultado = await Editora.pegarPeloId(params.id);
if(!resultado) return res.status(404).json({ message: 'id não encontrado'});
return res.status(200).json(resultado);
} catch (err) {
return res.status(500).json(err.message);
}
};
Assim, se o o id não existir, o método retorna status 404, não passando no teste de pesquisa por id, caso o id informado não exista. E a sequência de testes modifiquei para o que segue:
[...]
let idEditoraCriada
describe('POST em editoras/id', () => {
it('Deve adicionar uma nova editora', async () => {
const resposta = await request(app)
.post('/editoras')
.send({
nome: 'CDC',
cidade: 'SP',
email: 's@s.com'
})
.expect(201)
idEditoraCriada = resposta.body.content.id
})
})
describe('GET em editoras/id', () => {
it('Deve retornar uma editora por id', async () => {
await request(app)
.get(`/editoras/${idEditoraCriada}`)
.expect(200)
})
})
describe('DELETE em editoras/id', () => {
it('Deve deletar a editora adicionada', async () => {
await request(app)
.delete(`/editoras/${idEditoraCriada}`)
.expect(200)
})
})
describe('GET em editoras/id não existente', () => {
it('Deve retornar not found', async () => {
await request(app)
.get(`/editoras/${idEditoraCriada}`)
.expect(404)
})
})