Skip to content
Snippets Groups Projects
Commit c0a65e0b authored by Vytor Calixto's avatar Vytor Calixto :space_invader:
Browse files

Merge branch 'class_room_count_route' into 'development'

Classroom count route

See merge request !38
parents a3c91fbb 0544fc22
No related branches found
No related tags found
2 merge requests!116Release v1.0.0,!38Classroom count route
Pipeline #
......@@ -26,6 +26,8 @@ const simulation = require('./simulation');
const user = require('./user');
const classroom = require('./classroom');
api.get('/', (req, res) => {
res.json({ msg: 'SimCAQ API is running' });
});
......@@ -40,5 +42,6 @@ api.use('/region', cache('15 day'), region);
api.use('/city', cache('15 day'), city);
api.use('/school', cache('15 day'), school);
api.use('/spatial', cache('1 day'), spatial);
api.use('/classroom', cache('15 day'), classroom);
module.exports = api;
const express = require('express');
const classroomApp = express.Router();
const libs = `${process.cwd()}/libs`;
const squel = require('squel');
const query = require(`${libs}/middlewares/query`);
const response = require(`${libs}/middlewares/response`);
const ReqQueryFields = require(`${libs}/middlewares/reqQueryFields`);
let rqf = new ReqQueryFields();
rqf.addField({
name: 'filter',
field: false,
where: true
}).addField({
name: 'dims',
field: true,
where: false
}).addValue({
name: 'school',
table: 'escola',
tableField: 'id',
where: {
relation: '=',
type: 'integer',
field: 'id'
}
}).addValue({
name: 'city',
table: 'municipio',
tableField: 'nome',
resultField: 'city_name',
where: {
relation: '=',
type: 'integer',
field: 'municipio_id',
table: 'escola'
},
join: {
primary: 'id',
foreign: 'municipio_id',
foreignTable: 'escola'
}
}).addValue({
name: 'state',
table: 'estado',
tableField: 'nome',
resultField: 'state_name',
where: {
relation: '=',
type: 'integer',
field: 'estado_id',
table: 'escola'
},
join: {
primary: 'id',
foreign: 'estado_id',
foreignTable: 'escola'
}
}).addValue({
name: 'region',
table: 'regiao',
tableField: 'nome',
resultField: 'region_name',
where: {
relation: '=',
type: 'integer',
field: 'id'
},
join: {
primary: 'id',
foreign: 'regiao_id',
foreignTable: 'escola'
}
}).addValue({
name: 'year',
table: 'escola',
tableField: 'ano_censo',
resultField: 'year',
where: {
relation: '=',
type: 'integer',
field: 'ano_censo',
table: 'escola'
}
}).addValue({
name: 'adm_dependency',
table: 'dependencia_adm',
tableField: 'nome',
resultField: 'adm_dependency_name',
where: {
relation: '=',
type: 'integer',
field: 'id'
},
join: {
primary: 'id',
foreign: 'dependencia_adm_id',
foreignTable: 'escola'
}
}).addValue({
name: 'adm_dependency_detailed',
table: 'dependencia_adm',
tableField: 'nome',
resultField: 'adm_dependency_detailed_name',
where: {
relation: '=',
type: 'integer',
field: 'id'
},
join: {
primary: 'id',
foreign: 'dependencia_adm_priv',
foreignTable: 'escola'
}
}).addValue({
name: 'locality',
table: 'escola',
tableField: 'cod_localizacao',
resultField: 'locality',
where: {
relation: '=',
type: 'integer',
field: 'cod_localizacao',
table: 'escola'
}
});
classroomApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
console.log(req.filter);
req.sql.from('escola')
.field('SUM(escola.num_salas)', 'total')
.field("'Brasil'", 'name')
.field('escola.ano_censo', 'year')
.group('escola.ano_censo')
.order('escola.ano_censo')
.where('escola.situacao_de_funcionamento = 1 AND escola.local_func_predio_escolar = 1');
next();
}, query, response('classroom'));
module.exports = classroomApp;
process.env.NODE_ENV = 'test';
const chai = require('chai');
const dirtyChai = require('dirty-chai');
chai.use(dirtyChai);
const chaiXml = require('chai-xml');
chai.use(chaiXml);
const chaiHttp = require('chai-http');
const assert = chai.assert;
const expect = chai.expect;
const should = chai.should(); // actually call the function
const libs = `${process.cwd()}/libs`;
const server = require(`${libs}/app`);
chai.use(chaiHttp);
describe('request classrooms', () => {
it('should list classrooms', (done) => {
chai.request(server)
.get('/api/v1/classroom')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid filters', (done) => {
chai.request(server)
.get('/api/v1/classroom?filter=city:4106902')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid filters', (done) => {
chai.request(server)
.get('/api/v1/classroom?filter=state:41')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid filters', (done) => {
chai.request(server)
.get('/api/v1/classroom?filter=region:4')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid filters', (done) => {
chai.request(server)
.get('/api/v1/classroom?filter=adm_dependency:3')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid filters', (done) => {
chai.request(server)
.get('/api/v1/classroom?filter=adm_dependency_detailed:5')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid filters', (done) => {
chai.request(server)
.get('/api/v1/classroom?filter=locality:1')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid dimensions', (done) => {
chai.request(server)
.get('/api/v1/classroom?dims=city')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('city_name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid dimensions', (done) => {
chai.request(server)
.get('/api/v1/classroom?dims=state')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('state_name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid dimensions', (done) => {
chai.request(server)
.get('/api/v1/classroom?dims=region')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('region_name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid dimensions', (done) => {
chai.request(server)
.get('/api/v1/classroom?dims=adm_dependency')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('adm_dependency_name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid dimensions', (done) => {
chai.request(server)
.get('/api/v1/classroom?dims=adm_dependency_detailed')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('adm_dependency_detailed_name');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with valid dimensions', (done) => {
chai.request(server)
.get('/api/v1/classroom?dims=locality')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('locality');
res.body.result[0].should.have.property('total');
done();
});
});
it('should list classrooms with invalid dimensions', (done) => {
chai.request(server)
.get('/api/v1/class?dims=foo,bar')
.end((err, res) => {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property('result');
res.body.result.should.be.a('array');
res.body.result[0].should.have.property('name');
res.body.result[0].should.have.property('total');
done();
});
});
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment