Commit 3d910301 authored by D’jalmar Gutierrez Titirico's avatar D’jalmar Gutierrez Titirico 🚲

Merge branch 'iss40-test-busquedas' into 'desarrollo'

Iss40 test busquedas

Se realizaron los test unitarios para los filtros de postulantes por tag

See merge request !48
parents 4a5bdbb5 9f548d19
......@@ -10,7 +10,7 @@ var cargoCtrlStub = {
destroy: 'cargoCtrl.destroy'
};
var autenticacionServiceStub= {
var autenticacionServiceStub = {
estaAutenticado(){
return 'autenticacionService.estaAutenticado'
},
......@@ -19,7 +19,7 @@ var autenticacionServiceStub= {
}
};
var parametrosRutaValidatorStub = {
formatearRuta:'formatearRutaService'
formatearRuta: 'formatearRutaService'
};
var routerStub = {
......@@ -33,7 +33,7 @@ var routerStub = {
// require the index with our stubbed out modules
var cargoIndex = proxyquire('./index.js', {
'express': {
Router: function() {
Router: function () {
return routerStub;
}
},
......@@ -42,68 +42,68 @@ var cargoIndex = proxyquire('./index.js', {
'../../components/middleware/parametrosRuta.validator': parametrosRutaValidatorStub
});
describe('Cargo API Router:', function() {
describe('Cargo API Router:', function () {
it('Debe retornar una Instancia de Express', function() {
it('Debe retornar una Instancia de Express', function () {
expect(cargoIndex).to.equal(routerStub);
});
describe('GET /api/cargos', function() {
describe('GET /api/cargos', function () {
it('Debe apuntar a la ruta cargo.controller.index', function() {
it('Debe apuntar a la ruta cargo.controller.index', function () {
expect(routerStub.get
.withArgs('/', 'autenticacionService.estaAutenticado', 'formatearRutaService', 'cargoCtrl.index')
).to.have.been.calledOnce;
).to.have.been.calledOnce;
});
});
describe('GET /api/cargos/:id', function() {
describe('GET /api/cargos/:id', function () {
it('Debe apuntar a la ruta cargo.controller.show', function() {
it('Debe apuntar a la ruta cargo.controller.show', function () {
expect(routerStub.get
.withArgs('/:id', 'autenticacionService.estaAutenticado', 'cargoCtrl.show')
).to.have.been.calledOnce;
.withArgs('/:id', 'autenticacionService.estaAutenticado', 'formatearRutaService', 'cargoCtrl.show')
).to.have.been.calledOnce;
});
});
describe('POST /api/cargos', function() {
describe('POST /api/cargos', function () {
it('Debe apuntar a la ruta cargo.controller.create', function() {
it('Debe apuntar a la ruta cargo.controller.create', function () {
expect(routerStub.post
.withArgs('/', 'autenticacionService.tieneRol.ADMINISTRATOR', 'cargoCtrl.create')
).to.have.been.calledOnce;
).to.have.been.calledOnce;
});
});
describe('PUT /api/cargos/:id', function() {
describe('PUT /api/cargos/:id', function () {
it('Debe apuntar a la ruta cargo.controller.update', function() {
it('Debe apuntar a la ruta cargo.controller.update', function () {
expect(routerStub.put
.withArgs('/:id', 'autenticacionService.tieneRol.ADMINISTRATOR', 'cargoCtrl.update')
).to.have.been.calledOnce;
).to.have.been.calledOnce;
});
});
describe('PATCH /api/cargos/:id', function() {
describe('PATCH /api/cargos/:id', function () {
it('Debe apuntar a la ruta cargo.controller.update', function() {
it('Debe apuntar a la ruta cargo.controller.update', function () {
expect(routerStub.patch
.withArgs('/:id', 'autenticacionService.tieneRol.ADMINISTRATOR', 'cargoCtrl.update')
).to.have.been.calledOnce;
).to.have.been.calledOnce;
});
});
describe('DELETE /api/cargos/:id', function() {
describe('DELETE /api/cargos/:id', function () {
it('Debe apuntar a la ruta cargo.controller.destroy', function() {
it('Debe apuntar a la ruta cargo.controller.destroy', function () {
expect(routerStub.delete
.withArgs('/:id', 'autenticacionService.tieneRol.ADMINISTRATOR', 'cargoCtrl.destroy')
).to.have.been.calledOnce;
).to.have.been.calledOnce;
});
});
......
......@@ -10,7 +10,7 @@ var postulanteCtrlStub = {
destroy: 'postulanteCtrl.destroy'
};
var autenticacionServiceStub= {
var autenticacionServiceStub = {
estaAutenticado(){
return 'autenticacionService.estaAutenticado'
},
......@@ -19,7 +19,7 @@ var autenticacionServiceStub= {
}
};
var parametrosRutaValidatorStub = {
formatearRuta:'formatearRutaService'
formatearRuta: 'formatearRutaService'
};
var routerStub = {
get: sinon.spy(),
......@@ -41,68 +41,68 @@ var postulanteIndex = proxyquire('./index.js', {
'../../components/middleware/parametrosRuta.validator': parametrosRutaValidatorStub
});
describe('Postulante API Router:', function() {
describe('Postulante API Router:', function () {
it('Debe retornar una Instancia de Express', function() {
it('Debe retornar una Instancia de Express', function () {
expect(postulanteIndex).to.equal(routerStub);
});
describe('GET /api/postulantes', function() {
describe('GET /api/postulantes', function () {
it('Debe apuntar a la ruta postulante.controller.indexxx', function() {
it('Debe apuntar a la ruta postulante.controller.indexxx', function () {
expect(routerStub.get
.withArgs('/', 'autenticacionService.estaAutenticado', 'formatearRutaService' ,'postulanteCtrl.index')
).to.have.been.calledOnce;
.withArgs('/', 'autenticacionService.estaAutenticado', 'formatearRutaService', 'postulanteCtrl.index')
).to.have.been.calledOnce;
});
});
describe('GET /api/postulantes/:id', function() {
describe('GET /api/postulantes/:id', function () {
it('Debe apuntar a la ruta postulante.controller.show', function() {
it('Debe apuntar a la ruta postulante.controller.show', function () {
expect(routerStub.get
.withArgs('/:id','autenticacionService.estaAutenticado', 'postulanteCtrl.show')
).to.have.been.calledOnce;
.withArgs('/:id', 'autenticacionService.estaAutenticado', 'formatearRutaService', 'postulanteCtrl.show')
).to.have.been.calledOnce;
});
});
describe('POST /api/postulantes', function() {
describe('POST /api/postulantes', function () {
it('Debe apuntar a la ruta postulante.controller.create', function() {
it('Debe apuntar a la ruta postulante.controller.create', function () {
expect(routerStub.post
.withArgs('/', 'autenticacionService.tieneRol.ADMINISTRATOR', 'postulanteCtrl.create')
).to.have.been.calledOnce;
).to.have.been.calledOnce;
});
});
describe('PUT /api/postulantes/:id', function() {
describe('PUT /api/postulantes/:id', function () {
it('Debe apuntar a la ruta postulante.controller.update', function() {
it('Debe apuntar a la ruta postulante.controller.update', function () {
expect(routerStub.put
.withArgs('/:id', 'autenticacionService.tieneRol.ADMINISTRATOR', 'postulanteCtrl.update')
).to.have.been.calledOnce;
).to.have.been.calledOnce;
});
});
describe('PATCH /api/postulantes/:id', function() {
describe('PATCH /api/postulantes/:id', function () {
it('Debe apuntar a la ruta postulante.controller.update', function() {
it('Debe apuntar a la ruta postulante.controller.update', function () {
expect(routerStub.patch
.withArgs('/:id', 'autenticacionService.tieneRol.ADMINISTRATOR', 'postulanteCtrl.update')
).to.have.been.calledOnce;
).to.have.been.calledOnce;
});
});
describe('DELETE /api/postulantes/:id', function() {
describe('DELETE /api/postulantes/:id', function () {
it('Debe apuntar a la ruta postulante.controller.destroy', function() {
it('Debe apuntar a la ruta postulante.controller.destroy', function () {
expect(routerStub.delete
.withArgs('/:id', 'autenticacionService.tieneRol.ADMINISTRATOR', 'postulanteCtrl.destroy')
).to.have.been.calledOnce;
).to.have.been.calledOnce;
});
});
......
......@@ -3,12 +3,14 @@
var app = require('../..');
import request from 'supertest';
import {Postulante} from '../../sqldb';
import {Tag} from '../../sqldb';
import {Cargo} from '../../sqldb';
describe('Postulante API:', function() {
describe('Postulante API:', function () {
var nuevoPostulante;
var token;
before(function(done) {
before(function (done) {
Postulante.destroy({where: {}}).then(()=> {
request(app)
.post('/api/autenticar/ldap')
......@@ -25,8 +27,8 @@ describe('Postulante API:', function() {
});
});
describe('GET /api/postulantes', function() {
it('Debe obtener un objeto con la cantidad de los postulantes y un array con todos los postulantes', function(done){
describe('GET /api/postulantes', function () {
it('Debe obtener un objeto con la cantidad de los postulantes y un array con todos los postulantes', function (done) {
request(app)
.get('/api/postulantes')
.set('authorization', 'Bearer ' + token)
......@@ -40,7 +42,7 @@ describe('Postulante API:', function() {
})
});
describe('POST /api/postulantes', function() {
describe('POST /api/postulantes', function () {
it('Debe crear un nuevo postulante', function (done) {
request(app)
.post('/api/postulantes')
......@@ -58,7 +60,7 @@ describe('Postulante API:', function() {
})
});
describe('GET /api/postulantes/:id', function() {
describe('GET /api/postulantes/:id', function () {
it('Debe obtener un postulante por el id', function (done) {
request(app)
.get('/api/postulantes/' + nuevoPostulante._id)
......@@ -74,7 +76,7 @@ describe('Postulante API:', function() {
})
});
describe('PUT /api/postulantes/:id', function() {
describe('PUT /api/postulantes/:id', function () {
it('Debe actualizar un postulante', function (done) {
nuevoPostulante.nombres = "Ana";
nuevoPostulante.apellidos = "Lopez Perez";
......@@ -94,9 +96,9 @@ describe('Postulante API:', function() {
})
});
describe('DELETE /api/postulantes/:id', function() {
describe('DELETE /api/postulantes/:id', function () {
it('Debe responder con 204 en la eliminacion', function(done) {
it('Debe responder con 204 en la eliminacion', function (done) {
request(app)
.delete('/api/postulantes/' + nuevoPostulante._id)
.set('authorization', 'Bearer ' + token)
......@@ -109,7 +111,7 @@ describe('Postulante API:', function() {
});
});
it('Debe responder con 404 si postulante no existe', function(done) {
it('Debe responder con 404 si postulante no existe', function (done) {
request(app)
.delete('/api/postulantes/' + nuevoPostulante._id)
.set('authorization', 'Bearer ' + token)
......@@ -123,5 +125,87 @@ describe('Postulante API:', function() {
});
});
describe('GET /api/postulantes/?filtro', function () {
var postulantes;
var tags;
before(function (done) {
Postulante.destroy({where: {}}).then(()=> {
Postulante.bulkCreate([{
nombres: "Juan Jose",
apellidos: "Perez Gomez",
ci: "6867562"
}, {
nombres: "juan",
apellidos: "Perez",
ci: "6867561"
}, {
nombres: "Ana",
apellidos: "Lujan Ramirez",
ci: "6867558"
}], {returning: true}).then(resultado => {
postulantes = resultado;
Tag.destroy({where: {}}).then(()=> {
Tag.bulkCreate([
{nombre: "Java"},
{nombre: "javascript"},
{nombre: "python"},
{nombre: "postgres"},
{nombre: "c++"},
{nombre: "c#"},
{nombre: "PHP"}
], {returning: true}).then(result=> {
tags = result;
var promise = Promise.resolve();
var i = 0;
postulantes.forEach(postulante=> {
promise = promise.then(()=> {
postulante.setTags([
tags[i],
tags[i + 1],
tags[i + 2],
tags[i + 3]])
}).then(()=>i += 1);
});
done();
})
})
})
});
});
it("Deberia filtrar los postulantes con determinados los tag postgres y python", function (done) {
request(app)
.get('/api/postulantes?incluye=%7B%22entidad%22:%22Tags%22,%22buscar%22:%5B%7B%22palabra%22:%22python%22,%22en%22:%22nombre%22%7D,%7B%22palabra%22:%22postgres%22,%22en%22:%22nombre%22%7D%5D%7D')
.set('authorization', 'Bearer ' + token)
.expect(200)
.expect('Content-Type', /json/)
.end((err, res)=> {
expect(res.body.count).to.equal(3);
done();
});
});
it("Deberia filtrar los postulantes con determinados tags", function (done) {
request(app)
.get('/api/postulantes?incluye=%7B%22entidad%22:%22Tags%22,%22buscar%22:%5B%7B%22palabra%22:%22Java%22,%22en%22:%22nombre%22%7D,%7B%22palabra%22:%22javascript%22,%22en%22:%22nombre%22%7D%5D%7D')
.set('authorization', 'Bearer ' + token)
.expect(200)
.expect('Content-Type', /json/)
.end((err, res)=> {
expect(res.body.count).to.equal(1);
expect(res.body.rows[0].nombres).to.equal("Juan Jose");
done();
});
})
it("Deberia filtrar los postulantes con tags inexistentes", function (done) {
request(app)
.get('/api/postulantes?incluye=%7B%22entidad%22:%22Tags%22,%22buscar%22:%5B%7B%22palabra%22:%22Java%22,%22en%22:%22nombre%22%7D,%7B%22palabra%22:%22javascriptt%22,%22en%22:%22nombre%22%7D%5D%7D')
.set('authorization', 'Bearer ' + token)
.expect(200)
.expect('Content-Type', /json/)
.end((err, res)=> {
expect(res.body.count).to.equal(0);
done();
});
})
})
});
......@@ -118,7 +118,7 @@ describe('Tag API:', function() {
});
describe('GET /api/tags?buscar=palabra&en=nombre', function () {
var tagss;
var tags;
beforeEach(function (done) {
Tag.destroy({where: {}}).then(()=> {
Tag.bulkCreate([{
......@@ -131,8 +131,8 @@ describe('Tag API:', function() {
nombre: "json"
}, {
nombre: "joomla"
}],{returning: true}).then(tags=> {
tagss = tags;
}],{returning: true}).then(resultado=> {
tags = resultado;
done();
})
});
......@@ -147,20 +147,19 @@ describe('Tag API:', function() {
.end((err, res)=> {
expect(res.body.count).to.equal(4);
expect(res.body.rows).to.be.instanceOf(Array);
done();
});
});
it("deberia realizar busqueda por id", function (done) {
request(app)
.get('/api/tags?palabras=' + tagss[0]._id + '&en=_id')
.get('/api/tags?palabras=' + tags[0]._id + '&en=_id')
.set('authorization', 'Bearer ' + token)
.expect(200)
.expect('Content-Type', /json/)
.end((err, res)=> {
expect(res.body.count).to.equal(1);
expect(res.body.rows[0]._id).to.equal(tagss[0]._id);
expect(res.body.rows[0]._id).to.equal(tags[0]._id);
done();
});
})
......
......@@ -3,95 +3,45 @@
var proxyquire = require('proxyquire').noPreserveCache();
var usuarioCtrlStub = {
index: 'usuarioCtrl.index',
show: 'usuarioCtrl.show',
create: 'usuarioCtrl.create',
update: 'usuarioCtrl.update',
destroy: 'usuarioCtrl.destroy'
yo: 'usuarioCtrl.yo',
};
var autenticacionServiceStub = {
estaAutenticado(){
return 'autenticacionService.estaAutenticado'
},
tieneRol(rol){
return 'autenticacionService.tieneRol.' + rol;
}
};
var routerStub = {
get: sinon.spy(),
put: sinon.spy(),
patch: sinon.spy(),
post: sinon.spy(),
delete: sinon.spy()
};
// require the index with our stubbed out modules
var usuarioIndex = proxyquire('./index.js', {
'express': {
Router: function() {
Router: function () {
return routerStub;
}
},
'./usuario.controller': usuarioCtrlStub
'./usuario.controller': usuarioCtrlStub,
'../../autenticacion/autenticacion.service': autenticacionServiceStub,
});
describe('Usuario API Router:', function() {
describe('Usuario API Router:', function () {
it('should return an express router instance', function() {
it('should return an express router instance', function () {
expect(usuarioIndex).to.equal(routerStub);
});
describe('GET /api/usuarios', function() {
it('should route to usuario.controller.index', function() {
expect(routerStub.get
.withArgs('/', 'usuarioCtrl.index')
).to.have.been.calledOnce;
});
});
describe('GET /api/usuarios/:id', function() {
describe('GET /api/usuarios/yo', function () {
it('should route to usuario.controller.show', function() {
it('Debe enrutar a usuarioController.yo', function () {
expect(routerStub.get
.withArgs('/:id', 'usuarioCtrl.show')
).to.have.been.calledOnce;
.withArgs('/yo', 'autenticacionService.estaAutenticado', 'usuarioCtrl.yo')
).to.have.been.calledOnce;
});
});
describe('POST /api/usuarios', function() {
it('should route to usuario.controller.create', function() {
expect(routerStub.post
.withArgs('/', 'usuarioCtrl.create')
).to.have.been.calledOnce;
});
});
describe('PUT /api/usuarios/:id', function() {
it('should route to usuario.controller.update', function() {
expect(routerStub.put
.withArgs('/:id', 'usuarioCtrl.update')
).to.have.been.calledOnce;
});
});
describe('PATCH /api/usuarios/:id', function() {
it('should route to usuario.controller.update', function() {
expect(routerStub.patch
.withArgs('/:id', 'usuarioCtrl.update')
).to.have.been.calledOnce;
});
});
describe('DELETE /api/usuarios/:id', function() {
it('should route to usuario.controller.destroy', function() {
expect(routerStub.delete
.withArgs('/:id', 'usuarioCtrl.destroy')
).to.have.been.calledOnce;
});
});
});
......@@ -3,141 +3,38 @@
var app = require('../..');
import request from 'supertest';
var newUsuario;
describe('Usuario API:', function() {
describe('GET /api/usuarios', function() {
var usuarios;
beforeEach(function(done) {
request(app)
.get('/api/usuarios')
.expect(200)
.expect('Content-Type', /json/)
.end((err, res) => {
if (err) {
return done(err);
}
usuarios = res.body;
done();
});
});
it('should respond with JSON array', function() {
expect(usuarios).to.be.instanceOf(Array);
});
});
describe('POST /api/usuarios', function() {
beforeEach(function(done) {
describe('Usuario API:', function () {
var token;
before(function (done) {
Postulante.destroy({where: {}}).then(()=> {
request(app)
.post('/api/usuarios')
.post('/api/autenticar/ldap')
.send({
name: 'New Usuario',
info: 'This is the brand new usuario!!!'
nombreUsuario: 'test',
contrasena: '123456'
})
.expect(201)
.expect('Content-Type', /json/)
.end((err, res) => {
if (err) {
return done(err);
}
newUsuario = res.body;
done();
});
});
it('should respond with the newly created usuario', function() {
expect(newUsuario.name).to.equal('New Usuario');
expect(newUsuario.info).to.equal('This is the brand new usuario!!!');
});
});
describe('GET /api/usuarios/:id', function() {
var usuario;
beforeEach(function(done) {
request(app)
.get('/api/usuarios/' + newUsuario._id)
.expect(200)
.expect('Content-Type', /json/)
.end((err, res) => {
if (err) {
return done(err);
}
usuario = res.body;
.end((err, res)=> {
token = res.body.token;
done();
});
});
afterEach(function() {
usuario = {};
});
it('should respond with the requested usuario', function() {
expect(usuario.name).to.equal('New Usuario');
expect(usuario.info).to.equal('This is the brand new usuario!!!');
});
});
describe('PUT /api/usuarios/:id', function() {
var updatedUsuario;
beforeEach(function(done) {
request(app)
.put('/api/usuarios/' + newUsuario._id)
.send({
name: 'Updated Usuario',
info: 'This is the updated usuario!!!'
})
.expect(200)
.expect('Content-Type', /json/)
.end(function(err, res) {
if (err) {
return done(err);
}
updatedUsuario = res.body;
done();
});
});
afterEach(function() {
updatedUsuario = {};
});
it('should respond with the updated usuario', function() {
expect(updatedUsuario.name).to.equal('Updated Usuario');
expect(updatedUsuario.info).to.equal('This is the updated usuario!!!');
});
});
describe('DELETE /api/usuarios/:id', function() {
it('should respond with 204 on successful removal', function(done) {
request(app)
.delete('/api/usuarios/' + newUsuario._id)
.expect(204)
.end((err, res) => {
if (err) {
return done(err);
}
done();
});
});
describe('GET /api/usuarios/yo', function () {
var usuario;
it('should respond with 404 when usuario does not exist', function(done) {
beforeEach(function (done) {
request(app)
.delete('/api/usuarios/' + newUsuario._id)
.expect(404)
.get('/api/usuarios/yo')
.set('authorization', 'Bearer ' + token)
.expect(200)
.expect('Content-Type', /json/)
.end((err, res) => {
if (err) {
return done(err);
}
expect(res.body.nombreCompleto).to.equal('Test Gutierrez');
expect(res.body.nombreUsuario).to.equal('test');
done();
});
});
......
......@@ -12,9 +12,7 @@ export function respondWithResult(res, statusCode) {