Após criar um banco de dados novo com os testes, a rota que lista os produtos parou de funcionar. Segue abaixo o código
connectionFactory.js
const mysql = require('mysql');
module.exports = () => {
return createDBConnection;
}
// Colocamos em uma função a criação da conexão com o banco para que o auto-load não crie um objeto
// assim que for carregado. Assim, ele retorna a função que pode ser chamada á qualquer momento.
function createDBConnection() {
if(!process.env.NODE_ENV) { // Se nenhuma variável de ambiente estiver definida, ele supõe que está em dev
return mysql.createConnection({
host:'localhost',
user:'root',
password:'',
database:'casadocodigo_nodejs'
});
}
if(process.env.NODE_ENV == 'test') {
return mysql.createConnection({
host:'localhost',
user:'root',
password:'',
database:'casadocodigo_nodejs_test'
});
}
}
routes/produtos.js
app.get("/produtos", (req, resp, next) => {
const connection = app.infra.connectionFactory();
const produtosDAO = new app.infra.ProdutosDAO(connection);
produtosDAO.lista((erros, resultados) => {
if(erros){
return next(erros);
}
resp.format({
html: () => {
resp.render("produtos/lista", { lista: resultados });
},
json: () => {
resp.json(resultados);
}
});
});
connection.end();
});
test/produtos.js
it("#Listagem JSON", done => {
request.get("/produtos") // Faz uma requisição para "/produtos"
.set("Accept", "application/json") // Seta a resposta como application/json
.expect("Content-Type", /json/) // O conteúdo do request tem que ter JSON. Usado por Regex
.expect(200, done);// O status da requisição for 200 e a função done() é usada para que
// a próxima instrução só seja executada quando o callback for completamente executado.
});