Criei o banco de testes, tabela, tudo certinho. Mas ele não funciona, o teste passa mas não grava nada, nem no de testes nem no de desenvolvimento.
produtos.js
var express = require('../config/express')();
var request = require('supertest')(express);
describe('ProdutosController', function () {
it('#listagem de produtos json', function (done) {
request.get('/produtos')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200,done())
});
it('#cadastro de novo produto com dados invalidos', function (done) {
request.post('/produtos')
.send({titulo: '', descricao: 'novo livro de teste'})
.expect(400,done())
});
it('#cadastro de um novo produto com tudo preenchido2', function (done) {
request.post('/produtos')
.send({titulo:"novo livro2",preco:22.50,descricao:"livro de teste2"})
.expect(302, done())
});
});
produtos.js
module.exports = function(app) {
var listaProdutos = function(req, res, next) {
var connection = app.infra.connectionFactory();
var produtosDAO = new app.infra.ProdutosDAO(connection);
produtosDAO.lista(function(err, results) {
if(err){
return next(err);
}
res.format({
html: function() {
res.render('produtos/lista', {lista:results});
},
json: function() {
res.json(results);
}
});
});
connection.end();
}
app.get('/produtos', listaProdutos);
app.get('/produtos/json', function(req, res) {
var connection = app.infra.connectionFactory();
var produtosDAO = new app.infra.ProdutosDAO(connection);
produtosDAO.lista(function(err, results) {
res.json(results);
});
connection.end();
});
app.get('/produtos/form', function(req, res) {
res.render('produtos/form', {getValidationResult:{}, produto: {}});
});
app.post('/produtos', function(req, res) {
var produto = req.body;
var connection = app.infra.connectionFactory();
var produtosDAO = new app.infra.ProdutosDAO(connection);
req.assert('titulo', 'Titulo deve ser preenchido').notEmpty();
req.assert('preco','Preco deve ser um número').isFloat();
var errors = req.getValidationResult();
if(errors){
res.format({
html: function(){
res.status(400).render("produtos/form",{getValidationResult:errors,produto:produto});
},
json: function(){
res.status(400).send(errors);
}
});
return;
}
produtosDAO.salva(produto, function(err, results) {
res.redirect('/produtos');
});
connection.end();
});
}
connectionFactory.js
var mysql = require('mysql');
function createDBConnection(){
console.log('tipo de conexao:' + process.env.NODE_ENV);
if(!process.env.NODE_ENV || process.env.node === 'dev'){
console.log('Conexao 1 - A variavel de ambiente nao existe ou chama 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'
});
}
}
module.exports = function(){
return createDBConnection;
}