From 0a326cefadcdc9f58651103e2d2ad2cd548ec529 Mon Sep 17 00:00:00 2001 From: Victor Picussa <vp16@inf.ufpr.br> Date: Thu, 24 May 2018 10:05:41 -0300 Subject: [PATCH] [dailyChargeAmount]Median, STD, 1 Quartile and 3 Quartile done --- src/libs/routes/dailyChargeAmount.js | 8 +- src/test/dailyChargeAmount.js | 159 +++++++++++++++++++++++++++ 2 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 src/test/dailyChargeAmount.js diff --git a/src/libs/routes/dailyChargeAmount.js b/src/libs/routes/dailyChargeAmount.js index 5935372e..b8b3726b 100644 --- a/src/libs/routes/dailyChargeAmount.js +++ b/src/libs/routes/dailyChargeAmount.js @@ -289,7 +289,11 @@ dailyChargeAmount.get('/', rqf.parse(), rqf.build(), (req, res, next) => { req.sql.from('turma') .field('turma.ano_censo', 'year') .field('turma.etapa_resumida', 'education_level_short_id') - .field('AVG(turma.duracao_turma)/60', 'average_class_duration') + .field('AVG(turma.duracao_turma)/60.0', 'average_class_duration') + .field('MEDIAN(turma.duracao_turma)/60.0', 'median_class_duration') + .field('STDDEV_POP(turma.duracao_turma)/60.0', 'std_class_duration') + .field('QUANTILE(turma.duracao_turma, 0.25)/60.0', 'fstqt_class_duration') + .field('QUANTILE(turma.duracao_turma, 0.75)/60.0', 'thdqt_class_duration') .group('turma.ano_censo') .group('turma.etapa_resumida') .order('turma.ano_censo') @@ -345,7 +349,7 @@ dailyChargeAmount.get('/average', rqf.parse(), rqf.build(), (req, res, next) => req.sql.from('turma') .field('turma.ano_censo', 'year') .field('turma.etapas_mod_ensino_segmento_id', 'education_level_mod_id') - .field('AVG(turma.duracao_turma)/60', 'average_class_duration') + .field('AVG(turma.duracao_turma)/60.0', 'average_class_duration') .group('turma.ano_censo') .group('turma.etapas_mod_ensino_segmento_id') .order('turma.ano_censo') diff --git a/src/test/dailyChargeAmount.js b/src/test/dailyChargeAmount.js new file mode 100644 index 00000000..92e2b59a --- /dev/null +++ b/src/test/dailyChargeAmount.js @@ -0,0 +1,159 @@ +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 daily charge amount', () => { + it('should list the year range', (done) => { + chai.request(server) + .get('/api/v1/dailyChargeAmount/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 year range', (done) => { + chai.request(server) + .get('/api/v1/dailyChargeAmount/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 locations', (done) => { + chai.request(server) + .get('/api/v1/dailyChargeAmount/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/dailyChargeAmount/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 education level mod', (done) => { + chai.request(server) + .get('/api/v1/dailyChargeAmount/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 dimensions of education_level_short', (done) => { + chai.request(server) + .get('/api/v1/dailyChargeAmount?dims=education_level_short&filter=min_year:"2015",max_year:"2015",integral_time:"0",period:["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('year'); + res.body.result[0].should.have.property('education_level_short_id'); + res.body.result[0].should.have.property('education_level_short_name'); + 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'); + done(); + }); + }); + + it('should list the filter of education level mod', (done) => { + chai.request(server) + .get('/api/v1/dailyChargeAmount/average?filter=education_level_mod:["3","4","5","6"],integral_time:"0",period:["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('year'); + 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('average_class_duration'); + done(); + }); + }); + + it('should return 400 with no filters', (done) => { + chai.request(server) + .get('/api/v1/dailyChargeAmount') + .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 return 400 with no filters', (done) => { + chai.request(server) + .get('/api/v1/dailyChargeAmount/average?filter=education_level_mod:["3","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('year'); + 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('average_class_duration'); + done(); + }); + }); +}); -- GitLab