diff --git a/gulpfile.babel.js b/gulpfile.babel.js index b04d93d43dcda10ef5266c97184fa063990fbdff..b2758b0a6abe55329d30fb9658e0547e5fcb150d 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -1,3 +1,5 @@ +require('babel-core/register'); + const fs = require('fs'); const gulp = require('gulp'); @@ -74,11 +76,15 @@ gulp.task('test', ['pre-test'], () => { gulp.src('test/test.js', {read: false}) .pipe(mocha()) .pipe(istanbul.writeReports()) - .pipe(istanbul.enforceThresholds({ thresholds: { global: 75 } })) - .once('error', () => { + .pipe(istanbul.enforceThresholds({ + thresholds: { + global: 80 + } + })) + .on('error', () => { process.exit(1); }) - .once('end', () => { + .on('end', () => { process.exit(); }); }); diff --git a/package.json b/package.json index d477028f1cc2935964241cde6376b3fd33c40cfc..acc29cd2e3d6ff9a605fde13cfaa6774243b6307 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "babel-register": "^6.14.0", "babelify": "^7.3.0", "browserify": "^13.1.0", + "chai-xml": "^0.3.1", "docdash": "^0.4.0", "eslint": "^3.3.1", "eslint-config-airbnb": "^10.0.1", diff --git a/src/libs/routes/enrollment.js b/src/libs/routes/enrollment.js index b6f434ce0d47c873995975287765fe3bd3f890ff..9fe6e903bdbe9bc10b89181866a920792b832533 100644 --- a/src/libs/routes/enrollment.js +++ b/src/libs/routes/enrollment.js @@ -48,11 +48,6 @@ enrollmentApp.get('/adm_dependency', (req, res, next) => { next(); }, query, response('adm_dependency')); -enrollmentApp.get('/data', (req, res, next) => { - req.sql = squel.select().from('turmas'); - next(); -}, query, response('data')); - // Parse the filters and dimensions parameter in the query enrollmentApp.use('/', parseParams('filter', [ 'min_year', diff --git a/src/server.js b/src/server.js index f18adf4916a38c192e4ab986a5fd17c5254fe206..0eef8dfa5fb4764522f0b1c0be02da239603d347 100644 --- a/src/server.js +++ b/src/server.js @@ -18,3 +18,6 @@ app.set('ip', process.env.IP || config.get('ip') || '127.0.0.1'); const server = app.listen(app.get('port'), () => { log.info(`Express server listening on port ${server.address().port}`); }); + +// For testing +module.exports = server; diff --git a/src/test/test.js b/src/test/test.js index a7e17edac1b67ebeb0a9b1f3f18951f54e78b6f6..066b7b77c9651dbde50b97cd6ab730c78053d27b 100644 --- a/src/test/test.js +++ b/src/test/test.js @@ -1,9 +1,15 @@ +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; @@ -32,6 +38,48 @@ describe('API is running', () => { }); describe('request enrollments', () => { + it('should list the year range', (done) => { + chai.request(server) + .get('/api/v1/enrollment/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 education level', (done) => { + chai.request(server) + .get('/api/v1/enrollment/education_level') + .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', (done) => { + chai.request(server) + .get('/api/v1/enrollment/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 enrollments', (done) => { chai.request(server) .get('/api/v1/enrollment') @@ -45,6 +93,84 @@ describe('request enrollments', () => { done(); }); }); + + it('should list enrollments with valid filters', (done) => { + chai.request(server) + .get('/api/v1/enrollment?filter=min_year:2010,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 enrollments with invalid filters', (done) => { + chai.request(server) + .get('/api/v1/enrollment?filter=foo:2010,bar: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 enrollments with valid dimensions', (done) => { + chai.request(server) + .get('/api/v1/enrollment?dims=region,state,adm_dependency_id,location_id&filter=min_year:2014,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('region_name'); + res.body.result[0].should.have.property('state_name'); + res.body.result[0].should.have.property('adm_dependency_name'); + res.body.result[0].should.have.property('total'); + done(); + }); + }); + + it('should list enrollments with invalid dimensions', (done) => { + chai.request(server) + .get('/api/v1/enrollment?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(); + }); + }); + + it('should list enrollments with valid dimensions and filters', (done) => { + chai.request(server) + .get('/api/v1/enrollment?dims=region,state,education_level_id,school&filter=min_year:2013,max_year:2014,city:3287') + .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('state_name'); + res.body.result[0].should.have.property('school_name'); + res.body.result[0].should.have.property('education_level'); + res.body.result[0].should.have.property('total'); + res.body.result[0].should.have.property('year'); + done(); + }); + }); + + }); describe('request regions', () => { @@ -239,3 +365,34 @@ describe('request schools', () => { }) }) }); + +describe('test response', () => { + it('should list all regions in json', (done) => { + chai.request(server) + .get('/api/v1/region') + .end((err, res) => { + res.should.have.status(200); + res.should.be.json; + done(); + }); + }); + + it('should list all regions in xml', (done) => { + chai.request(server) + .get('/api/v1/region?format=xml') + .end((err, res) => { + res.should.have.status(200); + res.should.be.xml; + done(); + }); + }); + + it('should list all regions in csv', (done) => { + chai.request(server) + .get('/api/v1/region?format=csv') + .end((err, res) => { + res.should.have.status(200); + done(); + }); + }); +});