diff --git a/src/libs/routes/enrollment.js b/src/libs/routes/enrollment.js index 389595ecb4b473ad610ebc516d03dbdd3a8ef005..65110003de781c01472300fe233dc03898c79d96 100644 --- a/src/libs/routes/enrollment.js +++ b/src/libs/routes/enrollment.js @@ -512,8 +512,8 @@ rqf.addField({ name: 'ethnic_group', table: 'matricula', tableField: 'cor_raca_id', + resultField: 'ethnic_group_id', where: { - resultField: 'ethnic_group_id', relation: '=', type: 'integer', field: 'cor_raca_id' diff --git a/src/libs/routes/financial.js b/src/libs/routes/financial.js index c4de60928a1732fea35ce663a2ad3a99e03db22d..bfe272058ce1d385bce3934b49a094140c496f1e 100644 --- a/src/libs/routes/financial.js +++ b/src/libs/routes/financial.js @@ -150,20 +150,36 @@ rqf.addField({ }); financialApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { - req.sql.from('indicadores_financeiros') - .field('indicadores_financeiros.estado_id', 'state_id') - .field('indicadores_financeiros.ano_censo', 'year') - .field('estado.sigla', 'state_abbreviation') - .field('indicadores_financeiros.valor', 'valor') - .field('indicadores_financeiros.esfera_adm', 'sphere_adm_id') - .field('indicadores_financeiros.dados_financeiros', 'financial_data_id') - .join('estado', null, 'indicadores_financeiros.estado_id=estado.id') - .group('indicadores_financeiros.ano_censo') - .group('indicadores_financeiros.estado_id') - .group('estado.sigla') - .group('indicadores_financeiros.valor') - .group('indicadores_financeiros.dados_financeiros') - .group('indicadores_financeiros.esfera_adm') + if ("state" in req.filter) { + req.sql.from('indicadores_financeiros') + .field('indicadores_financeiros.estado_id', 'state_id') + .field('indicadores_financeiros.ano_censo', 'year') + .field('estado.sigla', 'state_abbreviation') + .field('indicadores_financeiros.valor', 'valor') + .field('indicadores_financeiros.esfera_adm', 'sphere_adm_id') + .field('indicadores_financeiros.dados_financeiros', 'financial_data_id') + .group('indicadores_financeiros.ano_censo') + .group('indicadores_financeiros.estado_id') + .group('estado.sigla') + .group('indicadores_financeiros.valor') + .group('indicadores_financeiros.dados_financeiros') + .group('indicadores_financeiros.esfera_adm') + } else { + req.sql.from('indicadores_financeiros') + .field('indicadores_financeiros.estado_id', 'state_id') + .field('indicadores_financeiros.ano_censo', 'year') + .field('estado.sigla', 'state_abbreviation') + .field('indicadores_financeiros.valor', 'valor') + .field('indicadores_financeiros.esfera_adm', 'sphere_adm_id') + .field('indicadores_financeiros.dados_financeiros', 'financial_data_id') + .join('estado', null, 'indicadores_financeiros.estado_id=estado.id') + .group('indicadores_financeiros.ano_censo') + .group('indicadores_financeiros.estado_id') + .group('estado.sigla') + .group('indicadores_financeiros.valor') + .group('indicadores_financeiros.dados_financeiros') + .group('indicadores_financeiros.esfera_adm') + } next(); }, query, addMissing(rqf), id2str.transform(), response('financial')); diff --git a/src/libs/routes/schoolInfrastructure.js b/src/libs/routes/schoolInfrastructure.js index ca7cbd28e18bdbc3fdc48b42c2427aa920b86819..f805e8827768eec1c4c6122c25da4be2672d43ce 100644 --- a/src/libs/routes/schoolInfrastructure.js +++ b/src/libs/routes/schoolInfrastructure.js @@ -87,19 +87,26 @@ infrastructureApp.get('/rural_location', (req, res, next) => { }, response('rural_location')); infrastructureApp.get('/adm_dependency', (req, res, next) => { - req.sql.from('dependencia_adm') - .field('id') - .field('nome', 'name') - .where('id <= 4'); + req.result = []; + for(let i = 1; i <= 4; ++i) { + req.result.push({ + id: i, + name: id2str.admDependency(i) + }); + }; next(); -}, query, response('adm_dependency')); +}, response('adm_dependency')); infrastructureApp.get('/adm_dependency_detailed', (req, res, next) => { - req.sql.from('dependencia_adm_priv') - .field('id', 'id') - .field('nome', 'name'); + req.result = []; + for(let i = 1; i <= 6; ++i) { + req.result.push({ + id: i, + name: id2str.admDependencyPriv(i) + }); + }; next(); -}, query, response('adm_dependency_detailed')); +}, response('adm_dependency_detailed')); rqf.addField({ name: 'filter', diff --git a/src/libs/routes/transport.js b/src/libs/routes/transport.js index b286c001f85b7a89221f28570a0826beca50ba0e..6435833b591e75e3af451aeb4cce420904fb2449 100644 --- a/src/libs/routes/transport.js +++ b/src/libs/routes/transport.js @@ -287,16 +287,6 @@ rqf.addField({ type: 'integer', field: 'tipo' } -}).addValue({ - name: 'service_type', - table: 'matricula', - tableField: 'tipo', - resultField: 'service_type_id', - where: { - relation: '=', - type: 'integer', - field: 'tipo' - } }).addValue({ name: 'min_year', table: 'matricula', diff --git a/src/test/class.js b/src/test/class.js index a10ee1f1adeb2daf94f0aaf122cb39b77df45206..dd283b55ac5a0bb84378ff49d14c5254135b76d2 100644 --- a/src/test/class.js +++ b/src/test/class.js @@ -127,7 +127,7 @@ describe('request class', () => { }); }); - it('should list the administrative dependencies', (done) => { + it('should list the administrative dependencies detailed', (done) => { chai.request(server) .get('/api/v1/class/adm_dependency_detailed') .end((err, res) => { @@ -141,7 +141,7 @@ describe('request class', () => { }); }); - it('should list the administrative dependencies detailed', (done) => { + it('should list the administrative dependencies', (done) => { chai.request(server) .get('/api/v1/class/adm_dependency') .end((err, res) => { diff --git a/src/test/classCount.js b/src/test/classCount.js new file mode 100644 index 0000000000000000000000000000000000000000..9880db28f2468054dd9cf54cc149b9b32a002838 --- /dev/null +++ b/src/test/classCount.js @@ -0,0 +1,318 @@ +/* +Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR + +This file is part of simcaq-node. + +simcaq-node is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +simcaq-node is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with simcaq-node. If not, see <https://www.gnu.org/licenses/>. +*/ + +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 classCount', () => { + it('should return 400 with no filters', (done) => { + chai.request(server) + .get('/api/v1/class_count/') + .end((err, res) => { + res.should.have.status(400); + res.should.be.json; + res.body.should.have.property('error'); + res.body.error.should.be.equal('Wrong/No filter specified'); + done(); + }); + }); + + it('should list the rural locations', (done) => { + chai.request(server) + .get('/api/v1/class_count/rural_location') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the education level mod', (done) => { + chai.request(server) + .get('/api/v1/class_count/education_level_mod') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the education level short', (done) => { + chai.request(server) + .get('/api/v1/class_count/education_level_short') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the year range', (done) => { + chai.request(server) + .get('/api/v1/class_count/year_range') + .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('start_year'); + res.body.result[0].should.have.property('end_year'); + done(); + }); + }); + + it('should list the years', (done) => { + chai.request(server) + .get('/api/v1/class_count/years') + .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('year'); + done(); + }); + }); + + it('should list the administrative dependencies', (done) => { + chai.request(server) + .get('/api/v1/class_count/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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the administrative dependencies detailed', (done) => { + chai.request(server) + .get('/api/v1/class_count/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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the locations', (done) => { + chai.request(server) + .get('/api/v1/class_count/location') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the source', (done) => { + chai.request(server) + .get('/api/v1/class_count/source') + .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('source'); + done(); + }); + }); + + it('should list the simcaq class count', (done) => { + chai.request(server) + .get('/api/v1/class_count/count') + .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('year'); + res.body.result[0].should.have.property('average'); + res.body.result[0].should.have.property('median'); + res.body.result[0].should.have.property('stddev'); + res.body.result[0].should.have.property('first_qt'); + res.body.result[0].should.have.property('third_qt'); + done(); + }); + }); + + it('should list the simcaq class count with valid filter', (done) => { + chai.request(server) + .get('/api/v1/class_count/count?filter=state:14') + .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('year'); + res.body.result[0].should.have.property('average'); + res.body.result[0].should.have.property('median'); + res.body.result[0].should.have.property('stddev'); + res.body.result[0].should.have.property('first_qt'); + res.body.result[0].should.have.property('third_qt'); + done(); + }); + }); + + it('should list the simcaq class count with valid dim', (done) => { + chai.request(server) + .get('/api/v1/class_count/count?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('year'); + res.body.result[0].should.have.property('average'); + res.body.result[0].should.have.property('median'); + res.body.result[0].should.have.property('stddev'); + res.body.result[0].should.have.property('first_qt'); + res.body.result[0].should.have.property('third_qt'); + res.body.result[0].should.have.property('region_name'); + done(); + }); + }); + + it('should list class count with education level filter', (done) => { + chai.request(server) + .get('/api/v1/class_count?filter=education_level_mod:["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('year'); + res.body.result[0].should.have.property('average'); + res.body.result[0].should.have.property('median'); + res.body.result[0].should.have.property('stddev'); + res.body.result[0].should.have.property('first_qt'); + res.body.result[0].should.have.property('third_qt'); + done(); + }); + }); + + it('should list class count with education level dims', (done) => { + chai.request(server) + .get('/api/v1/class_count?dims=education_level_mod') + .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('year'); + res.body.result[0].should.have.property('average'); + res.body.result[0].should.have.property('median'); + res.body.result[0].should.have.property('stddev'); + res.body.result[0].should.have.property('first_qt'); + res.body.result[0].should.have.property('third_qt'); + res.body.result[0].should.have.property('education_level_mod_id'); + res.body.result[0].should.have.property('education_level_mod_name'); + done(); + }); + }); + + it('should list class count with valid dims', (done) => { + chai.request(server) + .get('/api/v1/class_count?dims=education_level_mod,location') + .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('year'); + res.body.result[0].should.have.property('average'); + res.body.result[0].should.have.property('median'); + res.body.result[0].should.have.property('stddev'); + res.body.result[0].should.have.property('first_qt'); + res.body.result[0].should.have.property('third_qt'); + res.body.result[0].should.have.property('education_level_mod_id'); + res.body.result[0].should.have.property('education_level_mod_name'); + res.body.result[0].should.have.property('location_id'); + res.body.result[0].should.have.property('location_name'); + done(); + }); + }); + + it('should list class count with education level year limiter', (done) => { + chai.request(server) + .get('/api/v1/class_count?dims=education_level_mod&filter=min_year:2014,max_year:2014') + .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('year'); + res.body.result[0].should.have.property('average'); + res.body.result[0].should.have.property('median'); + res.body.result[0].should.have.property('stddev'); + res.body.result[0].should.have.property('first_qt'); + res.body.result[0].should.have.property('third_qt'); + res.body.result[0].should.have.property('education_level_mod_id'); + res.body.result[0].should.have.property('education_level_mod_name'); + done(); + }); + }); + +}); diff --git a/src/test/cub.js b/src/test/cub.js index ea6c0d68af6d2fb60c11e401c365b4bf3bdd1de2..475e718f920bd51ce78d5b4150983d84a3d36fc5 100644 --- a/src/test/cub.js +++ b/src/test/cub.js @@ -112,4 +112,35 @@ describe('request cub', () => { done(); }); }); + + it('should return query cub wtih state dim', (done) => { + chai.request(server) + .get('/api/v1/cub?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('cod_uf'); + res.body.result[0].should.have.property('sigla_uf'); + res.body.result[0].should.have.property('tipo_preco'); + res.body.result[0].should.have.property('preco'); + done(); + }); + }); + + it('should return query cub wtih valid filter', (done) => { + chai.request(server) + .get('/api/v1/cub?filter=min_year:2017') + .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('sigla_uf'); + res.body.result[0].should.have.property('tipo_preco'); + res.body.result[0].should.have.property('preco'); + done(); + }); + }); }); diff --git a/src/test/dailyChargeAmount.js b/src/test/dailyChargeAmount.js index 20fb9aeabb2300b31fd8a971434177acb294fc8b..2c37d2749a1661b307cc37b64b643f8c76f2cb41 100644 --- a/src/test/dailyChargeAmount.js +++ b/src/test/dailyChargeAmount.js @@ -58,7 +58,7 @@ describe('request daily charge amount', () => { }); }); - it('should list the year range', (done) => { + it('should list the years', (done) => { chai.request(server) .get('/api/v1/daily_charge_amount/years') .end((err, res) => { @@ -71,6 +71,47 @@ describe('request daily charge amount', () => { }); }); + it('should list the source', (done) => { + chai.request(server) + .get('/api/v1/daily_charge_amount/source') + .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('source'); + done(); + }); + }); + + it('should list the adm dependency', (done) => { + chai.request(server) + .get('/api/v1/daily_charge_amount/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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the adm dependency detailed', (done) => { + chai.request(server) + .get('/api/v1/daily_charge_amount/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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + it('should list the locations', (done) => { chai.request(server) .get('/api/v1/daily_charge_amount/location') @@ -85,6 +126,21 @@ describe('request daily charge amount', () => { }); }); + it('should list the rural locations', (done) => { + chai.request(server) + .get('/api/v1/daily_charge_amount/rural_location') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list education level short', (done) => { chai.request(server) .get('/api/v1/daily_charge_amount/education_level_short') @@ -113,6 +169,20 @@ describe('request daily charge amount', () => { }); }); + it('should list the periods', (done) => { + chai.request(server) + .get('/api/v1/daily_charge_amount/period') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + it('should list the dimensions of education_level_short', (done) => { chai.request(server) .get('/api/v1/daily_charge_amount?dims=education_level_short&filter=min_year:"2015",max_year:"2015",integral_time:"0",period:["3"]') @@ -172,4 +242,45 @@ describe('request daily charge amount', () => { done(); }); }); + + it('should list the filter of integral time', (done) => { + chai.request(server) + .get('/api/v1/daily_charge_amount?filter=integral_time:"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('year'); + res.body.result[0].should.have.property('education_level_short_id'); + res.body.result[0].should.have.property('average_class_duration'); + res.body.result[0].should.have.property('median_class_duration'); + res.body.result[0].should.have.property('std_class_duration'); + res.body.result[0].should.have.property('fstqt_class_duration'); + res.body.result[0].should.have.property('thdqt_class_duration'); + res.body.result[0].should.have.property('education_level_short_name'); + done(); + }); + }); + + it('should list daily charge amount for period 2', (done) => { + chai.request(server) + .get('/api/v1/daily_charge_amount?filter=integral_time:"0",period:["2"]') + .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('year'); + res.body.result[0].should.have.property('education_level_short_id'); + res.body.result[0].should.have.property('average_class_duration'); + res.body.result[0].should.have.property('median_class_duration'); + res.body.result[0].should.have.property('std_class_duration'); + res.body.result[0].should.have.property('fstqt_class_duration'); + res.body.result[0].should.have.property('thdqt_class_duration'); + res.body.result[0].should.have.property('education_level_short_name'); + done(); + }); + }); + }); diff --git a/src/test/employees.js b/src/test/employees.js new file mode 100644 index 0000000000000000000000000000000000000000..2eff61c43f4aef2db2adf562548f9fcfa4259146 --- /dev/null +++ b/src/test/employees.js @@ -0,0 +1,215 @@ +/* +Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR + +This file is part of simcaq-node. + +simcaq-node is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +simcaq-node is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with simcaq-node. If not, see <https://www.gnu.org/licenses/>. +*/ + +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 employees', () => { + it('should list the employees default query', (done) => { + chai.request(server) + .get('/api/v1/employees') + .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('total'); + res.body.result[0].should.have.property('name'); + res.body.result[0].should.have.property('year'); + res.body.result[0].should.have.property('total_employees'); + res.body.result[0].should.have.property('total_teachers'); + done(); + }); + }); + + it('should list the year range', (done) => { + chai.request(server) + .get('/api/v1/employees/year_range') + .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('start_year'); + res.body.result[0].should.have.property('end_year'); + done(); + }); + }); + + it('should list the years', (done) => { + chai.request(server) + .get('/api/v1/employees/years') + .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('year'); + done(); + }); + }); + + it('should list the source', (done) => { + chai.request(server) + .get('/api/v1/employees/source') + .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('source'); + done(); + }); + }); + + + it('should list the adm dependency', (done) => { + chai.request(server) + .get('/api/v1/employees/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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the adm dependency detailed', (done) => { + chai.request(server) + .get('/api/v1/employees/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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the location', (done) => { + chai.request(server) + .get('/api/v1/employees/location') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the rural location', (done) => { + chai.request(server) + .get('/api/v1/employees/rural_location') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list employees with valid filter', (done) => { + chai.request(server) + .get('/api/v1/employees?filter=min_year:2017') + .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('total'); + res.body.result[0].should.have.property('name'); + res.body.result[0].should.have.property('year'); + res.body.result[0].should.have.property('total_employees'); + res.body.result[0].should.have.property('total_teachers'); + done(); + }); + }); + + it('should list employees with school dim', (done) => { + chai.request(server) + .get('/api/v1/employees?dims=school&filter=state:11') + .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('total'); + res.body.result[0].should.have.property('name'); + res.body.result[0].should.have.property('year'); + res.body.result[0].should.have.property('total_employees'); + res.body.result[0].should.have.property('total_teachers'); + res.body.result[0].should.have.property('school_name'); + res.body.result[0].should.have.property('school_id'); + done(); + }); + }); + + + it('should list employees with school filter', (done) => { + chai.request(server) + .get('/api/v1/employees?filter=school:41126882') + .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('total'); + res.body.result[0].should.have.property('name'); + res.body.result[0].should.have.property('year'); + res.body.result[0].should.have.property('total_employees'); + res.body.result[0].should.have.property('total_teachers'); + done(); + }); + }); + +}); \ No newline at end of file diff --git a/src/test/enrollment.js b/src/test/enrollment.js index af5f50a10db67db429b3c010f060b227cb3905fc..9ec5cba3314877483999f29be2ef700eba35646f 100644 --- a/src/test/enrollment.js +++ b/src/test/enrollment.js @@ -465,7 +465,7 @@ describe('request enrollments', () => { res.should.be.json; res.body.should.have.property('result'); res.body.result.should.be.a('array'); - res.body.result[0].should.have.property('cor_raca_id'); + res.body.result[0].should.have.property('ethnic_group_id'); done(); }); }); @@ -495,4 +495,18 @@ describe('request enrollments', () => { done(); }); }); + + it('should list the age range', (done) => { + chai.request(server) + .get('/api/v1/enrollment/age_range_all') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); }); diff --git a/src/test/glossEnrollmentRatio.js b/src/test/glossEnrollmentRatio.js index 562244cb6c27b5c9cfebb72eb9a8761b291b62da..39859b708082af41cdad78482b92a22aadcec21b 100644 --- a/src/test/glossEnrollmentRatio.js +++ b/src/test/glossEnrollmentRatio.js @@ -44,6 +44,19 @@ const server = require(`${libs}/app`); chai.use(chaiHttp); describe('request gloss enrollment ratio', () => { + it('should list the source', (done) => { + chai.request(server) + .get('/api/v1/gloss_enrollment_ratio/source') + .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('source'); + done(); + }); + }); + it('should list the year range', (done) => { chai.request(server) .get('/api/v1/gloss_enrollment_ratio/year_range') diff --git a/src/test/liquidEnrollmentRatio.js b/src/test/liquidEnrollmentRatio.js index bbea4bb6e63fad64b0a03af40f3a400dc1081e29..b61a8d8f144b383e41e1fbffe567db3080f7a93e 100644 --- a/src/test/liquidEnrollmentRatio.js +++ b/src/test/liquidEnrollmentRatio.js @@ -44,6 +44,19 @@ const server = require(`${libs}/app`); chai.use(chaiHttp); describe('request liquid enrollment ratio', () => { + it('should list the source', (done) => { + chai.request(server) + .get('/api/v1/liquid_enrollment_ratio/source') + .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('source'); + done(); + }); + }); + it('should list the year range', (done) => { chai.request(server) .get('/api/v1/liquid_enrollment_ratio/year_range') @@ -179,4 +192,23 @@ describe('request liquid enrollment ratio', () => { }); }); + it('should list liquid ratio with education level basic filter', (done) => { + chai.request(server) + .get('/api/v1/liquid_enrollment_ratio?dims=education_level_basic&filter=education_level_basic:["1","2","4","5","6"]') + .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('total'); + res.body.result[0].should.have.property('year'); + res.body.result[0].should.have.property('age_range'); + res.body.result[0].should.have.property('education_level_basic_id'); + res.body.result[0].should.have.property('education_level_basic_name'); + res.body.result[0].should.have.property('partial'); + res.body.result[0].should.have.property('denominator'); + done(); + }); + }); + }); diff --git a/src/test/outOfSchool.js b/src/test/outOfSchool.js new file mode 100644 index 0000000000000000000000000000000000000000..bd265f39fc6d7f445648d5f562c2f178df44a66d --- /dev/null +++ b/src/test/outOfSchool.js @@ -0,0 +1,232 @@ +/* +Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR + +This file is part of simcaq-node. + +simcaq-node is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +simcaq-node is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with simcaq-node. If not, see <https://www.gnu.org/licenses/>. +*/ + +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 out of school', () => { + it('should list the year range', (done) => { + chai.request(server) + .get('/api/v1/out_of_school/year_range') + .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('start_year'); + res.body.result[0].should.have.property('end_year'); + done(); + }); + }); + + it('should list the years', (done) => { + chai.request(server) + .get('/api/v1/out_of_school/years') + .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('year'); + done(); + }); + }); + + it('should list the full age range', (done) => { + chai.request(server) + .get('/api/v1/out_of_school/full_age_range') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the ethnic_group', (done) => { + chai.request(server) + .get('/api/v1/out_of_school/ethnic_group') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the location', (done) => { + chai.request(server) + .get('/api/v1/out_of_school/location') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the gender', (done) => { + chai.request(server) + .get('/api/v1/out_of_school/gender') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the fifth household income', (done) => { + chai.request(server) + .get('/api/v1/out_of_school/fifth_household_income') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the extremes household income', (done) => { + chai.request(server) + .get('/api/v1/out_of_school/extremes_household_income') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list default query out of school', (done) => { + chai.request(server) + .get('/api/v1/out_of_school') + .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('total'); + res.body.result[0].should.have.property('year'); + done(); + }); + }); + + it('should list out of school with valid filters', (done) => { + chai.request(server) + .get('/api/v1/out_of_school?filter=max_year:2010') + .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('year'); + res.body.result[0].should.have.property('total'); + done(); + }); + }); + + it('should list the simcaq default query for out of school', (done) => { + chai.request(server) + .get('/api/v1/out_of_school/simcaq') + .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('total'); + res.body.result[0].should.have.property('ano_censo'); + done(); + }); + }); + + it('should list simcaq out of school with valid filters', (done) => { + chai.request(server) + .get('/api/v1/out_of_school/simcaq?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('ano_censo'); + res.body.result[0].should.have.property('total'); + done(); + }); + }); + + it('should list simcaq out of school with valid dimensions', (done) => { + chai.request(server) + .get('/api/v1/out_of_school/simcaq?dims=state,pfe') + .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('pfe_id'); + res.body.result[0].should.have.property('pfe_name'); + res.body.result[0].should.have.property('ano_censo'); + res.body.result[0].should.have.property('total'); + res.body.result[0].should.have.property('state_id'); + done(); + }); + }); + +}); \ No newline at end of file diff --git a/src/test/schoolInfrastructure.js b/src/test/schoolInfrastructure.js new file mode 100644 index 0000000000000000000000000000000000000000..f167fb1ff2aa7521a5018066e40616ff5b56f10b --- /dev/null +++ b/src/test/schoolInfrastructure.js @@ -0,0 +1,183 @@ +/* +Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR + +This file is part of simcaq-node. + +simcaq-node is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +simcaq-node is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with simcaq-node. If not, see <https://www.gnu.org/licenses/>. +*/ + +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 school infrastructure', () => { + it('should list the default school insfrastructure query', (done) => { + chai.request(server) + .get('/api/v1/school_infrastructure') + .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('schools_in_school_buildings'); + res.body.result[0].should.have.property('urban_schools_in_school_buildings'); + res.body.result[0].should.have.property('country_schools_in_school_buildings'); + res.body.result[0].should.have.property('schools_not_in_school_buildings'); + res.body.result[0].should.have.property('libraries'); + res.body.result[0].should.have.property('libraries_reading_room'); + res.body.result[0].should.have.property('computer_lab'); + res.body.result[0].should.have.property('science_lab'); + res.body.result[0].should.have.property('kids_park'); + res.body.result[0].should.have.property('nursery'); + res.body.result[0].should.have.property('sports_court'); + res.body.result[0].should.have.property('sports_court_coverage'); + res.body.result[0].should.have.property('courtyard'); + res.body.result[0].should.have.property('courtyard_coverage'); + res.body.result[0].should.have.property('director_room'); + res.body.result[0].should.have.property('secretary'); + res.body.result[0].should.have.property('teacher_room'); + res.body.result[0].should.have.property('kitchen'); + res.body.result[0].should.have.property('storeroom'); + res.body.result[0].should.have.property('warehouse'); + res.body.result[0].should.have.property('internet'); + res.body.result[0].should.have.property('broadband_internet'); + res.body.result[0].should.have.property('inside_bathroom'); + res.body.result[0].should.have.property('inside_kids_bathroom'); + res.body.result[0].should.have.property('eletric_energy'); + res.body.result[0].should.have.property('water_supply'); + res.body.result[0].should.have.property('filtered_water'); + res.body.result[0].should.have.property('sewage_treatment'); + res.body.result[0].should.have.property('adapted_building'); + res.body.result[0].should.have.property('special_bathroom'); + done(); + }); + }); + it('should list the year range', (done) => { + chai.request(server) + .get('/api/v1/school_infrastructure/year_range') + .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('start_year'); + res.body.result[0].should.have.property('end_year'); + done(); + }); + }); + + it('should list the years', (done) => { + chai.request(server) + .get('/api/v1/school_infrastructure/years') + .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('year'); + done(); + }); + }); + + it('should list the source', (done) => { + chai.request(server) + .get('/api/v1/school_infrastructure/source') + .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('source'); + done(); + }); + }); + + it('should list the location', (done) => { + chai.request(server) + .get('/api/v1/school_infrastructure/location') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the rural location', (done) => { + chai.request(server) + .get('/api/v1/school_infrastructure/rural_location') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the adm dependency', (done) => { + chai.request(server) + .get('/api/v1/school_infrastructure/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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + + it('should list the adm dependency detailed', (done) => { + chai.request(server) + .get('/api/v1/school_infrastructure/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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); +}); \ No newline at end of file diff --git a/src/test/transport.js b/src/test/transport.js index 39374999c557c42b9019c7fce736439ce601d290..217d688f51abfadfcf3d1d14aee2dccfc9d0b4f6 100644 --- a/src/test/transport.js +++ b/src/test/transport.js @@ -57,7 +57,7 @@ describe('request transport', () => { }); }); - it('should list the year range', (done) => { + it('should list the years', (done) => { chai.request(server) .get('/api/v1/transport/years') .end((err, res) => { @@ -70,7 +70,7 @@ describe('request transport', () => { }); }); - it('should list the years', (done) => { + it('should list the year range', (done) => { chai.request(server) .get('/api/v1/transport/year_range') .end((err, res) => { @@ -181,4 +181,18 @@ describe('request transport', () => { }); }); + it('should list the service type', (done) => { + chai.request(server) + .get('/api/v1/transport/service_type') + .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('id'); + res.body.result[0].should.have.property('name'); + done(); + }); + }); + });